码迷,mamicode.com
首页 > 其他好文 > 详细

ansible中playbook使用

时间:2019-01-14 01:07:11      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:pack   分组   bcd   交互式   div   mod   sharp   批量   yum   

palybook使用

#####定义/etc/ansible/hosts

两种方式:

基于ssh密码登录

不配置免密码登录,需要在hosts文件中配置

第一种:基于ssh密码登录

参数一:inventory
ansible的主要功能用于批量管理主机操作,便捷的使用部分主机,可以在inventory file中分组
默认的inventory file为/etc/ansible/hosts

1.inventory文件格式
同一主机归并到一个或者多个组中,主机使用非默认的22端口,也可以在主机名称后加冒号端口标明

www.ab.com
[webservers] www.abc.com:222 www.abcd.com [dbservers] db1.abc.com db2.abc.com db3.abc.com

 如果主机遵循相似的命名模式,可以使用列表标记各个主机

[webserver]
www[01:30].example.com

[dbserver]
db-[a:f].example.com

 2.主机变量
可以在定义主机时添加远程主机变量便于在playbook中使用{http中的变量,在j2中配置}

[webserver]
www.ab.com http_port=80 maxRequestsPerChild=808
www.abc.com http_port=8080 maxRequestsPerChild=909

 3.组变量
赋予指定组内的所有主机在playbook中用的变量(vars)
可以调用组里面的变量。

[webserver]
www.ab.com
www.bc.com
[webserver:vars]
host_port=80
maxRequestsPerChild=890

4.组嵌套
组还包括其他组,可以在其他组中指定变量,只能在ansible-playbook中使用,ansible不支持
children中包括apache,nginx的主机。,共四台主机

[apache]
http1.abc.com
http2.abc.com
[nginx]
nginx1.abc.com
nginx2.abc.com
[webservers:children]
apache
nginx
[webservers:vars]
host_port=80

 ansible基于ssh连接inventory可以指定远程主机,通过参数指定交互式,参数如下:

ansible_ssh_host
ansible_ssh_port
ansible_ssh_user
ansible_ssh_pass
ansible_sudo_pass
ansible_connection
ansible_ssh_private_key_file
ansible_shell_type
ansible_python_interpreter

第二种:不基于ssh免密码登录

即便是我们没有做关于秘钥的认证,我们也会自动使用账户和密码来登录该主机。

[webservers]
192.168.133.2 ansible_ssh_user=root ansible_ssh_pass=123456
192.168.133.3 testvar="2.100

 ####基本结构

module_name: module_args   模块名和模块参数

- host: webserver
  remote_user:
  task:
  - task1
    module_name: module_args
    - name: test connection
      ping:
      remote_user; www
      sudo: yes
      command: /sbin/setenforce 0
      shell: /usr/bin/somecommand || /bin/true
      ignore_errors: True
  - task2
    module_name: module_args

- host:dbservers

 在运行playbook是中途发生错误,可能会回滚,更正后,重新执行一次。
可以指定使用sudo的方式远程执行任务,用sudo到root用户执行命令。
众多模块中,只有command和shell模块仅使用给定一个列表而无需使用"key=value"
命令或脚本的退出码不为0,可以使用如上替代,命令不成功强行成功。
使用ignore_errors忽略错误信息



handlers:

  在notify中列出的操作为handler,比如之前配置了apache的配置文件,http.conf端口发生变化后,重新执行ansible-playbook后,查看远程的端口,并未发生变化。需要用到notify

引入变量:
    vars:在后面添加变量名,然后再引入变量,必须加{{}},用变量名替换。

- host: webservers
  remote_user: root
vars:
- packages: httpd tasks: - name: install httpd packages yum: name={{ packages }} state=lastest - name: install configuration file for httpd copy: src=/root/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf notify: - restart httpd - name: start httpd service service: enabled=true name={{ packages }} state=started handlers: - name: restart httpd service: name={{ packages }} state=restarted

 

ansible中playbook使用

标签:pack   分组   bcd   交互式   div   mod   sharp   批量   yum   

原文地址:https://www.cnblogs.com/fengzhongzhuzu/p/10264834.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!