Ansible-配置文件与Inventory文件

在​​Ansible入门​​中介绍了Ansible的工作机制,这篇着重介绍Ansible的配置文件和Inventory文件。

创新互联服务项目包括平利网站建设、平利网站制作、平利网页制作以及平利网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,平利网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到平利省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

使用Ansible一个好的习惯是将一个具体任务组织在单独的目录里,这样不会和别的配置任务发生冲突,排查故障时也方便定位。比如安装redis的任务,建立一个新的目录:/ansible/redis,并在目录中创建文件ansible.cfg和hosts。

配置文件

ansible.cfg是Ansible的配置文件,用来控制ansible的行为。配置文件可以出现在很多地方,它的优先级顺序如下:

  • ANSIBLE_CONFIG (一个环境变量)。
  • ansible.cfg (位于当前目录中)。
  • .ansible.cfg (位于用户的家目录中)。
  • /etc/ansible/ansible.cfg。

推荐使用第二种方式,将配置文件存放在当前路径中,不同的配置任务使用不同的配置文件。一个最简的ansible.cfg文件:

[defaults]
host_key_checking = False # SSH连接时不校验目标主机的指纹
inventory = hosts # 指定inventory文件

第三行很关键,指定操作目标主机的清单文件。ansible连接远程主机时默认使用当前登录系统用户,如果你以用户aneirin登录安装ansible命令的主机,当需要连接远端主机执行任务时,ansible也是以用户aneirin登录远端主机的。

实际工作中,配置一个专门的用户,这个用户在所管理的服务器中都存在,配置使用公钥登录每台服务器,免密执行需root权限的命令,这样可以省掉不少的麻烦。但前提是ansible主机需绝对安全,否则不要这样做。

inventory文件

这个文件中定义Ansible要操作的目标主机,

[redis]
192.168.52.130
192.168.52.131:2222
[ntpd]
192.168.52.132
192.168.52.133
[linux:children]
redis
ntpd
[linux:vars]
ansible_ssh_user = aneirin

实际环境中,肯定有不止一台服务器需要同时做配置,比如安装Redis,这时可以定义一个Redis主机组,然后将目标主机的IP地址填写上去,如果SSH连接配置了非22的端口,可以直接写到IP地址后面,用冒号隔开。

将多个主机组放到一个更大的主机组,使用[大主机组:children]的写法,上面inventory文件将redis和ntpd主机组放到了linux主机组中,方便ansible执行一些通用的配置。

最后两行针对主机组定义的变量,这些变量有些是可以定义在ansible配置文件中的,有些是为了在Playbook中使用(关于Playbook放到后面的讲解中)。

命令使用

/ansible/redis目录包含了ansible.cfg和hosts文件,就可以执行ansible的ad hoc命令了。

[aneirin@host redis]$ ansible linux -m shell -a 'uptime'
192.168.52.131 | CHANGED | rc=0 >>
18:23:48 up 4:48, 2 users, load average: 0.51, 0.40, 0.35
192.168.52.132 | CHANGED | rc=0 >>
18:23:48 up 4:48, 2 users, load average: 0.25, 0.22, 0.21
192.168.52.128 | CHANGED | rc=0 >>
18:23:51 up 1 day, 4:05, 2 users, load average: 0.38, 0.12, 0.08

ad hoc命令执行起来比较直接了当,比如要给大量的主机安装一个服务或者查询服务器的主机名这类工作使用ad hoc命令比较方便,ad hoc命令的缺点是不能重用,只能完成简单的工作。

安装Redis:

[aneirin@host redis]$ ansible redis -m yum -a 'name=redis state=present'
192.168.52.131 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"changes": {
"installed": [
"redis"
]
},
"msg": "",
"rc": 0,
......
}

要得到上面的结果,上面的Ansible配置文件需要增加几行。

[privilege_escalation]
become = True
become_method = sudo
become_ask_pass = False

分享题目:Ansible-配置文件与Inventory文件
文章位置:http://www.shufengxianlan.com/qtweb/news49/228849.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联