开源运维自动化工具 Ansible 详解(4)

查询ping模块的说明信息:

[root@centos01 ~]# ansible-doc ping > PING (/usr/lib/python2.7/site-packages/ansible/modules/system/ping.py) A trivial test module, this module always returns `pong' on successful contact. It does not make sense in playbooks, but it is useful from `/usr/bin/ansible' to verify the ability to login and that a usable python is configured. This is NOT ICMP ping, this is just a trivial test module. EXAMPLES: # Test we can logon to 'webservers' and execute python with json lib. ansible webservers -m ping MAINTAINERS: Ansible Core Team, Michael DeHaan METADATA: Status: ['stableinterface'] Supported_by: core 3)Ansible-playbook

Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux中的sh或source命令,用来执行系列任务。其工作机制:通过读取预先编写好的playbook文件实现集中处理任务。Ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要执行的任务代码,命令使用方式如下:

Ansible-playbook playbook.yml <!--playbook.yml文件要提前编写好,建议使用绝对路径--> 4)Ansible-console

Ansible-console是Ansible为用户提供的一款交互式工具,类似于Windows的cmd或者是Linux中shell。用户可以在ansible-console虚拟出来的终端上像shell一样使用Ansible内置的各种命令,这为习惯于使用shell交互式方式的用户提供了良好的使用体验。在终端输入ansible-console命令后,显示如下:

[root@centos01 ~]# ansible-console Welcome to the ansible console. Type help or ? to list commands. <!--输入help或?获取帮助--> root@all (2)[f:5]$ cd web <!--使用cd命令切换主机或分组--> root@web (2)[f:5]$ list <!--列出当前的设备--> 192.168.100.20 192.168.100.30 <!--支持Tab键补全,快捷键Ctrl+D或Ctrl+C即可退出当前的虚拟终端--> 4、Ansible模块 1)command模块

command模块在远程主机执行命令,不支持管道、重定向等shell的特性。常用的参数如下:

chdir:在远程主机上运行命令前要提前进入的目录;

creates:在命令运行时创建一个文件,如果文件已存在,则不会执行创建任务;

removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务;

executeable:指明运行命令的shell程序;

在所有主机上运行“ls ./”命令,运行前切换到/home目录下。操作如下:

[root@centos01 ~]# ansible web -m command -a "chdir=/ ls ./" 2)shell模块

shell模块在远程主机执行命令,相当于调用远程主机的Shell进程,然后在该Shell下打开一个子Shell运行命令。和command模块的区别是它支持Shell特性:如管道、重定向等。

示例如下:

[root@centos01 ~]# ansible web -m shell -a "echo hello world " <!--输出到屏幕--> 192.168.100.20 | SUCCESS | rc=0 >> hello world 192.168.100.30 | SUCCESS | rc=0 >> hello world [root@centos01 ~]# ansible web -m shell -a "echo hello world > /1.txt" <!--输出到1.txt文件中--> 192.168.100.20 | SUCCESS | rc=0 >> 192.168.100.30 | SUCCESS | rc=0 >> 3)copy模块

copy模块用于复制指定主机文件到远程主机的指定位置。常见的参数如下:

dest:指出复制文件的目标目录位置,使用绝对路径。如果源是目录,则目标也要是目录,如果目标文件已存在,会覆盖原有内容;

src:指出源文件的路径,可以使用相对路径和绝对路径,支持直接指定目录。如果源是目录,则目标也要是目录;

mode:指出复制时,目标文件的权限,可选;

owner:指出复制时,目标文件的属主,可选;

group:指出复制时目标文件的属组,可选;

content:指出复制到目标主机上的内容,不能和src一起使用,相当于复制content指明的数据到目标文件中;

示例如下:

[root@centos01 ~]# ansible web -m copy -a "src=/etc/hosts dest=/root/a1.hosts mode=777 owner=root group=root" <!--/将本机的hosts文件复制到web组中的所有主机上存放在家目录下的a1.hosts目录, 权限是777,属主是root,属组是root--> 4)hostname模块

hostname模块用于管理远程主机上的主机名。常用的参数如下:

name:指明主机名;

示例如下:

[root@centos01 ~]# ansible 192.168.100.20 -m hostname -a "name=test" <!--将192.168.100.20的主机名改为test, 但是192.168.100.20需要敲一下bash才生效--> 5)yum模块

yum模块基于yum机制,对远程主机管理程序包。常用的参数如下:

name:程序包名称,可以带上版本号。若不指明版本,则默认为最新版本;

state=present|atest|absent:指明对程序包执行的操作:present表明安装程序包,latest表示安装最新版本的程序包,absent表示卸载程序包;

disablerepo:在用yum安装时,临时禁用某个仓库的ID;

enablerepo:在用yum安装时,临时启用某个仓库的ID;

conf_file:yum运行时的配置文件,而不是使用默认的配置文件;

disable_gpg_check=yes|no:是否启用完整性校验功能;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/83f828c48821a1020ae3d9c1d6ed245b.html