1、覆盖清单位置
/etc/ansible/hosts文件被视为系统的默认静态清单文件。
不过,通常的做法是不使用该文件,而是在Ansible配置文件中为清单文件定义一个不同的位置。
2、构建Ansible清单
修改默认清单文件/etc/ansible/hosts添加以下内容:
192.168.145.136
[webservers]
192.168.145.137
192.168.145.138
使用以下命令列出默认清单文件中的所有受管主机
[root@localhost ~]# ansible all --list-hosts
使用以下命令列出不属于任何组的受管主机
[root@localhost ~]# ansible ungrouped --list-hosts
使用以下命令列出属于某组的受管主机
[root@localhost ~]# ansible webservers --list-hosts
3、配置Ansible的优先级
使用ANSIBLE_CONFIG环境变量 > 使用./ansible.cfg > 使用~/.ansible.cfg > 使用/etc/ansible/ansible.cfg
使用/etc/ansible/ansible.cfg
ansible软件包提供一个基本的配置文件,它位于/etc/ansible/ansible.cfg。如果找不到其他配置文件,则使用此文件。
使用~/.ansible.cfg
Ansible在用户的家目录中查找.ansible.cfg文件。如果存在此配置文件并且当前工作目录中也没有ansible.cfg文件,则使用此配置取代/etc/ansible/ansible.cfg。
使用./ansible.cfg
如果执行ansible命令的目录中存在ansible.cfg文件,则使用它,而不使用全局文件或用户的个人文件。这样,管理员可以创建一种目录结构,将不同的环境或项目存储在单独的目录中,并且每个目录包含为独特的一组设置而定制的配置文件。
使用ANSIBLE_CONFIG环境变量
我们可以通过将不同的配置文件放在不同的目录中,然后从适当的目录执行Ansible命令,以此利用配置文件。但是,随着配置文件数量的增加,这种方法存在局限性并且难以管理。有一个更加灵活的选项,即通过ANSIBLE_CONFIG环境变量定义配置文件的位置。定义了此变量时,Ansible将使用变量所指定的配置文件,而不用上面提到的任何配置文件。
ANSIBLE_CONFIG环境变量指定的任何文件将覆盖所有其他配置文件。如果没有设置该变量,则接下来检查运行ansible命令的目录中是否有ansible.cfg文件。如果不存在该文件,则检查用户的家目录是否有.ansible.cfg文件。只有在找不到其他配置文件时,才使用全局/etc/ansible/ansible.cfg文件。如果/etc/ansible/ansible.cfg配置文件不存在,Ansible包含它使用的默认值。
4、获取Ansible命令帮助
1.查看某个模块的帮助信息
[root@localhost ~]# ansible-doc +模块名
2.列出所有模块
[root@localhost ~]# ansible-doc -l
3.列出指定模块的所有选项
[root@localhost ~]# ansible-doc yum -s
4.查看指定模块的文档
[root@localhost ~]# ansible-doc cron
5、Ansible模块的使用
service模块
首先查看service模块的配置方法
[root@localhost ~]# ansible-doc service
开启httpd服务
[root@localhost ~]# ansible test -m service -a "name=httpd state=started"
设置开机自启
[root@localhost ~]# ansible test -m service -a "name=httpd enabled=yes"
远程下载httpd到server2上
[root@server1~]# ansible test -m yum -a "name=httpd state=present"
删除远程主机的应用软件
[root@server1 ~]# ansible test -m yum -a "name=httpd state=absent"
查看服务部署过程的使用方法(在部署命令后加 -vvv,v的个数越多消息越详细)
[root@server1 ~]# ansible test -m yum -a "name=httpd state=present" - vvv
查看防火墙规则的书写格式
[root@localhost ~]# ansible-doc firewalld
设置防火墙的规则
[root@localhost ~]# ansible-doc firewalld
启动防火墙服务
开启防火墙
[root@localhost ~]# ansible test -m service -a "name=firewalld state=started"
设置开机自启
[root@localhost ~]# ansible test -m service -a "name=firewalld enabled=yes"
查看防火墙的状态
[root@localhost ~]# systemctl is-enabled firewalld