前文再续,就书接上一回,上一回讲到如何 “构建Ansible主机清单” ,如果对本门的入门内功已经有所了解后,就可以修炼第二层了——配置文件。(所属内功:第二章 部署Ansible–管理ansible配置文件)
装逼心法----管理Ansible配置文件
说到配置文件,Ansible都有够特别,他可以在四个位置上定义配置文件,但这样是不是会重复呢?不会,因为有优先级决定了究竟使用哪个配置文件上的定义。以下献上内功心法。
第一层 配置文件优先级
Ansible配置文件ansible.cfg,可以存在于多个位置,他们的被读取的顺序如下:
ANSIBLE_CONFIG
ansible.cfg
.ansible.cfg
/etc/ansible/ansible.cfg
最先匹配的配置文件就会生效,而且可以一个一个单独设置。
别说人家有四个配置文件就说人奇葩啊,是方便你打通奇经八脉,运用在江湖的。
第二层 配置选项
查看ansible.cfg的配置项
[student@servera ~]$ grep "^\[" /etc/ansible/ansible.cfg
[defaults]
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]
第三层 常用配置选项解读
虽然ansible.cfg配置文件一堆配置选项参数,但常用的,真就那么几个,别说我没告诉你。
[defaults]
[privilege_escalation]:
become=True
become_method=sudo
become_user=root
become_ask_pass=False
第四层 官网配置参考网址
全部招式,怎么记得住啊?去藏经阁找找:
https://docs.ansible.com/ansible/latest/reference_appendices/config.html
第五层 提权注意事项
根据配置项可知,若要提权成功,则需要设置好对应的sudo权限才可以使用sudo,至于提权是否需要密码,就需要设置好对应的命令是否需要(实验为了方便演示,直接使用NOPASSWD: ALL,但在实际生产环境中,除了管理员外,不应该让用户拥有如此高的权限。)。
啥?你不练这层,就小心走火入魔了~
去炼器阁拿装备
高阶武器与防具还是必备。
实验拓扑介绍
实验使用4台虚拟机,分别命名为 servera、serverb、serverc、serverd。
其中,servera 为主控端,serverb、serverc、serverd为被控端。
为了方便演示与测试,4台机器的selinux已关闭。演示环境使用CentOS 7 系统。
为了方便以主机名做为访问互联,编辑 /etc/hosts 文件添加对应机器的ip地址映射,演示环境设置如下所示:
[root@servera ~]
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.159.111 servera
192.168.159.112 serverb
192.168.159.113 serverc
192.168.159.114 serverd
准备好各种武器,防具,爽。
行走江湖
练好了心法,是时候行走江湖出去装逼了。
编写配置文件
[student@servera ~]$ mkdir /home/student/manage
[student@servera ~]$ cd !$
cd /home/student/manage
[student@servera manage]$ vim ansible.cfg
[defaults]
inventory = ./inventory
编写主机清单
[student@servera manage]$ vim inventory
[myself]
localhost
[intranetweb]
servera
[everyone:children]
myself
intranetweb
验证主机清单
[student@servera manage]$ ansible myself --list-hosts
hosts (1):
localhost
[student@servera manage]$ ansible intranetweb --list-hosts
hosts (1):
servera
[student@servera manage]$ ansible everyone --list-hosts
hosts (2):
localhost
servera
设置提权需要提供密码
[student@servera manage]$ vim ansible.cfg
[defaults]
inventory = ./inventory
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass=true
提权设置是日后经常用到的配置,一定要好好理解。运用内功时,是否走火入魔,就看你有没有弄好提权了(第五层心法)。
验证
[student@servera manage]$ ansible intranetweb --list-hosts
SUDO password: student
hosts (1):
servera
初次闯荡,感觉好爽,突然想等着日后的奇遇。
|