Ansible配置文件
# /etc/ansible/有以下三个文件或者目录生成ansible.cfg # Ansible配置文件hosts # 主机清单配置文件roles # 角色定义目录
一、Ansible配置文件优先级
Ansible配置以ini格式存储配置数据,在Ansible中几乎所有配置都可以通过Ansible的Playbook或环境变量来重新赋值。在运行Ansible命令时,命令将会按照以下顺序查找配置文件。 优先级由高到低: 首先,Ansible命令会检查环境变量,及这个环境变量指向的配置文件。export ANSIBLE_CONFIG=/PATH 其次,将会检查当前目录下的ansible.cfg配置文件。./ansible.cfg 再次,将会检查当前用户家目录下的.ansible.cfg配置文件。~/.ansible.cfg 最后,将会检查在用软件包管理工具安装Ansible时自动产生的配置文件,即默认的配置文件。/etc/ansible/ansible.cfg
二、主配置文件/etc/ansible/ansible.cfg解析
[defaults] # 默认配置inventory=/home/student/ansible/inventory # 主机列表配置文件forks=5 # 默认并发数remote_port=22 # 远程端口号remote_user=student # 连接的时候使用什么用户进行连接roles_path=/home/student/ansible/roles # 角色定义目录host_key_checking=False # 设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例collections_path=/home/student/ansible/collections # 定义集合的路径,第三方模块通常安装在此目录下[privilege_escalation] # 定义对受管主机指向特权升级,默认普通用户是没有权限来执行Ansible任务的,但是我们可以给普通用户提权,让它有权限去执行Ansible任务become=Truebecome_method=sudobecome_user=rootbecome_ask_pass=False# 以下三个里面的内容用于优化与受管主机的连接[paramiko_connection][ssh_connection][accelerate][selinux] # 定义如何配置selinux交互
三、主机清单
清单定义Ansible将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。 可以通过两种方式定义主机清单。静态主机清单可以通过文本文件来定义。动态主机清单可以根据需要使用外部信息提供程序通过脚本或者其他程序来生成。
# 例1,不分组vim /home/student/ansible/inventorynode1node2node3node4node5# 例2,分组vim /home/student/ansible/inventory[web]node1node2node3[server]node3node4node5# 例3,分组,包含子组[web]node1node2node3[server]node3node4node5[webservers:children]web # web组为webservers组的子组
# 查看所有的受控主机ansible all -i hosts --list-hosts # -i后面的hosts指的是主机清单的文件名# 查看某组中包含哪些受控主机ansible server1 -i hosts --list-hosts # server1指的是组的名称
注意:Ansible命令必须在/home/student/ansible目录下执行,即你修改的配置文件ansible.cfg的同一目录中执行。
四、练习
创建/home/student/ansible/inventory的静态清单文件,以满足以下需求:
node1是dev主机组的成员
node2是test主机组的成员
node3是prod主机组的成员
prod组是webservers主机组的成员
vim /home/student/ansible/inventory[dev]node1[test]node2[prod]node3[webservers:children]prod