ansible 配置,在运⾏Ansible


文章目录

  • /etc/ansible 目录
  • 配置文件优先级
  • 主配置文件 /etc/ansible/ansible.cfg 解析
    • [privilege_escalation]
    • [paramiko_connection]、[ssh\_connection]、[accelerate]
    • [selinux]
  • 主机清单
  • 练习
    • 验证

/etc/ansible 目录

hosts:主机清单配置文件
ansible.cfg:Ansible配置文件
roles:角色定义目录

配置文件优先级

Ansible 配置以 ini 格式存储配置数据,在 Ansible 中⼏乎所有配置都可以通过 Ansible 的 Playbook 或环境变量来重新赋值。
在运⾏ Ansible 命令时,命令将会按照以下顺序查找配置⽂件。

  • ANSIBLE_CONFIG :⾸先,Ansible 命令会检查环境变量,及这个环境变量指向的配置⽂件。export ANSIBLE_CONFIG=/PATH
  • ./ansible.cfg :其次,将会检查当前⽬录下的 ansible.cfg 配置⽂件
  • ~/.ansible.cfg :再次,将会检查当前⽤户 home ⽬录下的 .ansible.cfg 配置⽂件。
  • /etc/ansible/ansible.cfg :最后,将会检查在⽤软件包管理⼯具安装 Ansible 时⾃动产⽣的配置⽂件。

主配置文件 /etc/ansible/ansible.cfg 解析

  • inventory = /etc/ansible/hosts:主机列表配置文件
  • library = /usr/share/my_modules/:库文件存放目录,ansible 默认搜寻模块的位置
  • module_utils = /usr/share/my_module_utils/:模块存放目录
  • remote_tmp = ~/.ansible/tmp:临时 py 命令文件存放在远程主机目录
  • local_tmp = ~/.ansible/tmp:本机的临时命令执行目录
  • forks = 5:默认并发数
  • poll_interval = 15:时间间隔
  • sudo_user = root:默认 sudo 用户
  • ask_sudo_pass = True:每次执行 ansible 命令是否询问 sudo 用户密码,默认值为 no
  • ask_pass = True:每次执行 ansible 命令是否询问 ssh 密码,默认值为 no
  • transport = smart:传输方式
  • remote_port = 22:远程端口号
  • remote_user = root:远程用户,受控主机使用什么用户进行执行 ansible 任务
  • roles_path = /etc/ansible/roles
  • host_key_checking = False

[privilege_escalation]

定义对受管主机执行特权升级,默认普通用户是没有权限来执行很多 ansible 任务的,但是我们可以给普通用户提权,让它有权限去执行 ansible 任务

  • become = true
  • become_method = sudo
  • become_user = root
  • become_ask_pass = false

[paramiko_connection]、[ssh_connection]、[accelerate]

用于优化与受管主机的连接

[selinux]

定义如何配置 selinux 交互

主机清单

  • 清单定义 ansible 将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。
  • 可以通过两种方式定义主机清单。静态主机清单可以通过文本文件来定义;动态主机清单可以根据需要使用外部信息提供程序通过脚本或者其他程序来生成。

练习

[root@server ~]# dnf -y install ansible

[root@server ~]# vim /etc/sudoers.d/student 
student	ALL=(ALL)	NOPASSWD: ALL

[root@server ~]# for i in node{1..3}
> do scp /etc/sudoers.d/student root@$i:/etc/sudoers.d/
> done
student                                               100%   32    45.4KB/s   00:00    
student                                               100%   32    53.5KB/s   00:00    
student                                               100%   32    53.4KB/s   00:00    

[root@server ~]# su - student

[student@server ~]$ mkdir ansible

[student@server ~]$ cd ansible/

[student@server ansible]$ vim inventory
[dev]
node1

[test]
node2

[prod]
node3

[webservers:children]
prod

[student@server ansible]$ mkdir roles

[student@server ansible]$ cp /etc/ansible/ansible.cfg .

[student@server ansible]$ vim ansible.cfg 
inventory      = /home/student/ansible/inventory			//取消注释,并修改
romete_user    = student			//添加此行
......
roles_path    = /home/student/ansible/roles			//取消注释,并修改
......
host_key_checking = False			//取消注释
......
[privilege_escalation]
become=True						//取消注释
become_method=sudo				//取消注释
become_user=root				//取消注释
become_ask_pass=False			//取消注释

验证

[student@server ansible]$ ansible all -m ping
node3 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
node2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
node1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

相关内容