前段时间我们写了一篇关于Ansible安装配置的文章。在该教程中,仅包含一些使用示例。如果您是Ansible新手,建议您阅读上一篇文章。熟悉后,您可以继续阅读本文。默认情况下,Ansible只使用5个并行进程。如果要在多台主机上执行任务,需要通过添加-f[进程数]选项手动设置进程数。什么是点对点临时命令?点对点命令用于在一个或多个受控节点上自动执行任务。它非常简单,但不可重复使用。它使用/usr/bin/ansible二进制文件进行所有操作。点对点命令最适合运行一次的任务。例如,如果您想检查指定用户是否可用,您可以使用单行代码而无需编写剧本。为什么要了解点对点命令?点对点命令证明了Ansible的简单性和强大性。从2.9版本开始,它支持3389个模块,因此您需要定期了解和学习要使用的Ansible模块列表。如果您是Ansible的新手,您可以借助点对点命令轻松练习这些模块和参数。您在这里学到的概念将直接移植到剧本中。点对点命令的一般语法:ansible[mode]-m[module]-a"[moduleoption]"点对点命令包含四个部分,具体如下:部分描述ansible命令模式输入listorspecifiedgroupmodulerunspecifiedmodulename模块选项指定模块参数如何使用Ansible清单文件。如果您使用Ansible的默认清单文件/etc/ansible/hosts,您可以直接调用它。否则,您可以使用-i选项指定Ansible清单文件的路径。什么是模式以及如何使用它?Ansible模式可以引用主机、IP地址、清单组、一组主机或清单中的所有主机。它允许您针对它们运行命令和剧本。模式非常灵活,您可以随心所欲地使用它们。例如,您可以排除主机、使用通配符或正则表达式等。下表描述了常见模式及其用法。但是,如果它不能满足您的需求,您可以在ansible-playbook中使用带有-e参数的模式中的变量。describemodetargetallhostsall(or*)在清单中的所有服务器上运行Ansible一台主机host1仅在给定主机上运行Ansible多台主机host1:host2(或host1,host2)在一组webservers之上的多台主机上运行AnsibleRunAnsible在webservers组中多个webservers组:dbserverswebservers中的所有主机加上dbservers中的所有主机Excludegroupwebservers:!atlantawebservers除atlantawebservers:&stagingwebservers之外的所有主机组之间的交集也在staging中的任何主机上什么是Ansible模块以及什么它有作用吗?模块,也称为“任务插件”或“库插件”,是一组代码单元,可以直接或通过剧本在远程主机上执行指定任务。Ansible在远程目标节点上执行指定的模块并收集其返回值。每个模块支持多种参数以满足用户的需求。除了少数几个模块外,几乎所有模块都采用key=value参数。您可以一次添加多个带空格的参数,命令或shell模块将直接运行您输入的字符串。我们将添加一个包含最常用“模块选项”参数的表格。要列出所有可用模块,请运行以下命令:$ansible-doc-l运行以下命令以阅读指定模块的文档:$ansible-doc[module]1)如何在Linux上使用Ansible列出其中的内容一个目录,使用Ansiblecommand模块来执行此操作,如下所示。我们在node1.2g.lab和nod2.2g.lab*远程服务器上列出了daygeek用户主目录的内容。$ansibleweb-mcommand-a"ls-lh/home/daygeek"node1.2g.lab|改变|rc=0>>总共12Kdrwxr-xr-x。2daygeekdaygeek2019年2月15日6Desktopdrwxr-xr-x。2daygeekdaygeek2019年2月15日6日文档drwxr-xr-x。2daygeekdaygeek2019年2月15日下载drwxr-xr-x。2daygeekdaygeek2019年2月15日6日Music-rwxr-xr-x。1daygeekdaygeek1592019年3月4日passwd-up.shdrwxr-xr-x。2daygeekdaygeek2019年2月15日6图片drwxr-xr-x。2daygeekdaygeek2019年2月15日6日Publicdrwxr-xr-x。2daygeekdaygeek2019年2月15日6日模板-rwxrwxr-x。1daygeekdaygeek1382019年3月10日用户-add.sh-rw-rw-r--。1daygeekdaygeek2019年3月10日18日user-list1.txtdrwxr-xr-x。2daygeekdaygeek2019年2月15日6日Videosnode2.2g.lab|改变|rc=0>>总计0drwxr-xr-x。2daygeekdaygeek11月9日6日09:55Desktopdrwxr-xr-x。2daygeekdaygeek6Nov909:55Documentsdrwxr-xr-x。2daygeekdaygeek11月9日09:55下载drwxr-xr-x。2daygeekdaygeek11月6日909:55Musicdrwxr-xr-x。2daygeekdaygeek11月9日6日09:55图片drwxr-xr-x。2daygeekdaygeek11月9日6日09:55Publicdrwxr-xr-x。2daygeekdaygeek11月9日6日09:55模板drwxr-xr-x。2daygeekdaygeek6Nov909:55视频2)如何在Linux上使用Ansible管理文件Ansible的复制模块将文件从本地系统复制到远程系统使用Ansiblecommand模块将文件移动或复制到远程计算机。$ansibleweb-mcopy-a"src=/home/daygeek/backup/CentOS7.2daygeek.com-20191025.tardest=/home/u1"--becomenode1.2g.lab|CHANGED=>{“ansible_facts”:{“discovered_interpreter_python”:“/usr/bin/python”},“changed”:true,“checksum”:“ad8aadc0542028676b5fe34c94347829f0485a8c”,“dest”:“/home/u1/CentOS7.2daygeek.com-20191025.tar","gid":0,"group":"root","md5sum":"ee8e778646e00456a4cedd5fd6458cf5","mode":"0644","owner":"root","secontext":“unconfined_u:object_r:user_home_t:s0”,“size”:30720,“src”:“/home/daygeek/.ansible/tmp/ansible-tmp-1579726582.474042-118186643704900/source”,“state”:“文件”,“uid”:0}node2.2g.lab|陈GED=>{"ansible_facts":{"discovered_interpreter_python":"/usr/libexec/platform-python"},"changed":true,"checksum":"ad8aadc0542028676b5fe34c94347829f0485a8c","dest":"/home/u1/CentOS7.2daygeek.com-20191025.tar","gid":0,"group":"root","md5sum":"ee8e778646e00456a4cedd5fd6458cf5","mode":"0644","owner":"root","secontext“:“unconfined_u:object_r:user_home_t:s0”,“大小”:30720,“src”:“/home/daygeek/.ansible/tmp/ansible-tmp-1579726582.4793239-237229399335623/source”,“状态”:“文件","uid":0}我们可以运行以下命令来验证:$ansibleweb-mcommand-a"ls-lh/home/u1"--becomenode1.2g.lab|改变|rc=0>>总计36K-rw-r--r--。1罗otroot30KJan2214:56CentOS7.2daygeek.com-20191025.tar-rw-r--r--。1rootroot25Dec903:31user-add.shnode2.2g.lab|改变|rc=0>>总计36K-rw-r--r--。1rootroot30KJan2302:26CentOS7.2daygeek.com-20191025.tar-rw-rw-r--。1u1u118Jan2302:21magi.txt要将文件从一个位置复制到远程计算机上的另一个位置,请使用以下命令:$ansibleweb-mcommand-a"cp/home/u2/magi/ansible-1.txt/home/u2/magi/2g"--成为移动文件,使用以下命令:$ansibleweb-mcommand-a"mv/home/u2/magi/ansible.txt/home/u2/magi/2g"--becomeinu1user在目录下新建一个名为ansible.txt的文件,运行以下命令:$ansibleweb-mfile-a"dest=/home/u1/ansible.txtowner=u1group=u1state=touch"--becomein在u1用户目录下新建目录magi,运行如下命令:$ansibleweb-mfile-a"dest=/home/u1/magimode=755owner=u2group=u2state=directory"--become将u1用户目录下的ansible.txt*文件权限改为777,执行如下命令:$ansibleweb-mfile-a"dest=/home/u1/ansible.txtmode=777"--become删除u1用户目录下的ansible.txt文件,运行如下命令:$ansibleweb-米菲尔e-a"dest=/home/u2/magi/ansible-1.txtstate=absent"--become删除一个目录用下面命令,会递归删除指定目录:$ansibleweb-mfile-a"dest=/home/u2/magi/2gstate=absent"--become3)用户管理您可以使用Ansible轻松执行用户管理活动,例如创建、删除用户以及将用户添加到组中。$ansibleall-muser-a"name=foopassword=[cryptedpasswordhere]"运行以下命令删除用户:$ansibleall-muser-a"name=foostate=absent"4)管理包使用合适的Ansible包管理器模块可以轻松管理安装包。例如,我们将使用yum模块来管理CentOS系统上的包。安装最新的Apache(httpd):$ansibleweb-myum-a"name=httpdstate=latest"卸载Apache(httpd)包:$ansibleweb-myum-a"name=httpdstate=absent"5)管理服务使用以下Ansible模块命令来管理Linux上的任何服务。停止httpd服务:$ansibleweb-mservice-a"name=httpdstate=stopped"启动httpd服务:$ansibleweb-mservice-a"name=httpdstate=started"重启httpd服务:$ansibleweb-mservice-a"name=httpdstate=restarted"
