1、Inventory 库存清单文件html
1.Inventory 做用python
Ansible 能够在同一时间针对多个系统设施进行管理工做。它经过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/etc/ansible/hosts,也能够使用 -i <path> 进行路径的指定。文件内的格式INI 风格,中括号内为分组名。 除了这个文件以后,还能够同时使用多个清单文件,能够动态的获取,也能够从外部获取外部库存清单文件。云平台上去拉取(如AWS,或者Cobbler 的API结合)。web
2.hosts文件格式是INI的格式,以及如何添加主机docker
和以前咱们上篇文中的同样,以下所示:shell
[centos_group] 172.17.0.2 172.17.0.3
为了有所区别,学习须要,咱们在添加1个centos-3主机(建立完成后,记得将management的公钥放到该主机上去,实现免密码登录)centos
[root@docker ~]# docker run -d -it --name centos-3 --expose 222 centos_sshd_3
查看下新主机的ipruby
[root@docker ~]# docker exec centos-3 hostname -I 172.17.0.4
而后,咱们在hosts 文件中原有 centos_group组下面,在添加单个组名webserver,组内主机设备为刚建立的centos-3,也能够以单个主机ip的方式存在(不过建议同一功能类型都分在组名里,为了后期管理方便)完整内容以下:服务器
[centos_group] 172.17.0.2 172.17.0.3 [webserver] 172.17.0.4
[webserver 是组名,用于对系统主机进行功能分类,便于你在统一给web服务器部署管理时,不影响其它主机。这样你在使用ansible 命令执行时,输入组名就能够对.2 和 .3进行管理了。以下:ssh
[root@docker ~]# ansible webserver -m ping 172.17.0.4 | SUCCESS => { "changed": false, "ping": "pong" }
3.非标准的 ssh 端口tcp
这里有个题外话:在我对centos-3 容器修改sshd 运行端口时,编辑好sshd_config 配置文件后,重启ssh服务会报一下提示:
[root@731705364b56 /]# systemctl restart sshd Failed to get D-Bus connection: Operation not permitted
我又想到用kill 命令,将sshd 服务进程杀掉,谁知容器却退出了。成了exited 状态。
后来查询资料了解到,由于容器的主进程就是CMD运行的命令 ,主进程退出时会退出容器, 在我kill sshd 进程的时候 主进程先退出了, 这时候docker容器也跟着退出了,原来要想让服务重启,要用docker 的restart命令。以下:
docker restart centos_3
重启后,端口运行在配置文件里指定的端口上啦。
若是你的主机ssh服务不是运行在 标准的22 端口时,在hosts里面就得更改定义方法了,目前有2种方式:
第一种:
[webserver] 172.17.0.4:222
第二种:
[webserver] web1 ansible_port=222 ansible_host=172.17.0.4
这里的web1 至关因而个别名。验证下:
[root@docker ~]# ansible webserver -m ping web1 | SUCCESS => { "changed": false, "ping": "pong" } [root@docker ~]# ansible web1 -m ping web1 | SUCCESS => { "changed": false, "ping": "pong" }
4.大量的主机
若是有不少同一网段和功能,并有规律的主机的话,能够使用像正则匹配的方式去修改hosts文件。以下:
[webserver] web1 ansible_port=222 ansible_host=172.17.0.4 [test] 172.17.0.[2:3]
运行ansible 验证下:
[root@docker ~]# ansible test -m ping 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" } 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong" }
除了用数字 定义范围外,还能够用字母的方式去匹配主机名,如a到z,a到c 等。
5.包含组的组名
若是你的webserver组的主机因为centos 系统须要更新一个系统文件,这个时候你在更新centos_group组的组机时,就能够把webserver组的主机带上。就出现了带有 :children关键字的组名.
配置文件以下:
[root@docker ~]# cat /etc/ansible/hosts [centos_group] 172.17.0.2 172.17.0.3 [webserver] web1 ansible_port=222 ansible_host=172.17.0.4 [centos:children] centos_group webserver
验证下:
[root@docker ~]# ansible centos -m ping web1 | SUCCESS => { "changed": false, "ping": "pong" } 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" } 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong" }
2、Inventory 清单参数列表
1.主机链接:
ansible_connection:链接主机的类型,这里能够是ansible链接插件的名称中的一个,如ssh 协议中的 smart,ssh或者paramiko。默认值是smart。
2.ssh 链接
使用特权命令(如sudo)
远程主机环境参数
ansible_shell_type:目标系统的shell 类型,你不该该设置这个参数,除非你设置的 ansible_shell_executable 与默认的sh 不兼容。默认状况下,命令是在sh shell 环境风格下运行的。此处能够设置为csh或fish shell。
some_host ansible_port=2222 ansible_user=manager aws_host ansible_ssh_private_key_file=/home/example/.ssh/aws.pem freebsd_host ansible_python_interpreter=/usr/local/bin/python ruby_module_host ansible_ruby_interpreter=/usr/bin/ruby.1.9.3
非SSH 的链接类型
如上面所说,ansible 执行剧本时经过ssh链接,可是它又不单单只局限于ssh这种链接类型。链接的类型是能够变的。以下面的几种
local:该链接类型将在控制机自己上执行剧本。
docker:该链接类型将使用本地docker直接将 剧本部署到 docker 容器中。如下是有链接器处理的参数:
ansible_host :要链接的docker 容器名称
ansible_user :在容器中操做的用户名,必须是容器内存在的用户
ansible_become :若是设置为 true,这个用户将被用于在容器内进行操做
ansible_docker_extra_args :能够是Docker 程序 启动时支持的额外参数,不是特定的命令,此参数主要用于配置远程Docker 守护进程使用。
以下是一个建立容器并进行部署的示例:
- name: create jenkins container docker: name: my_jenkins image: jenkins - name: add container to inventory add_host: name: my_jenkins ansible_connection: docker ansible_docker_extra_args: "--tlsverify --tlscacert=/path/to/ca.pem --tlscert=/path/to/client-cert.pem --tlskey=/path/to/client-key.pem -H=tcp://myserver.net:4243" ansible_user: jenkins changed_when: false - name: create directory for ssh keys delegate_to: my_jenkins file: path: "/var/jenkins_home/.ssh/jupiter" state: directory
若是文中有错误之处,还但愿你们多多指出,互相学习,谢谢。
下一篇再学习下ansible 里的 patterns。
注:本文属于飞走不可原创,若有转载,请务必在文首注明出处。飞走不可:-_-# http://www.cnblogs.com/hanyifeng/p/6137905.html