设为首页 收藏本站
查看: 5258|回复: 0

[经验分享] ansible-playbook常用的模块和参数

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-23 09:29:13 | 显示全部楼层 |阅读模式
一、Ansible-PlayBook的组成部分

1.1 Target section

   定义将要执行playbook的远程主机组

1.2 Variable section

   定义playbook运行时需要使用的变量
1.3 Task section
   定义将要在远程主机上执行的任务列表
1.4 Handlers section

   定义task执行完成以后需要调用的任务


2.Target section常用参数
2.1 hosts:定义远程主机组

2.2 user:执行该任务的用户
2.3 sudo:设置为yes的时候,执行任务的时候使用root权限
2.4 sudo_user:如果你设置用户为mysql,执行任务的时候使用mysql用户的权限
2.5 connection:通过什么方式连接到远程主机,默认ssh
2.6 gather_facks:是否启动在远程主机执行setup模块,默认会执行。可用setup模块获取远程主机的信息,在定义变量时可能会用到

3.Variable section常用参数
3.1 vars:定义格式、变量名、变量值
3.2 vars_files:指定变量文件
3.3 vars_prompt:用户交互模式自定义变量
3.4 setup:

4.Task section常用藏书
4.1 name:输出到屏幕的信息
4.2 action:定义执行的动作调用ansible模块如: yum name=httpd state=installed,安装apache服务
4.3 copy:复制本地文件到远程主机

4.4 template:复制本地文件到远程主机,但是他可以在本地文件中调用变量
4.5 service:定义服务状态如: service name=httpd state=restart,重启apache服务
4.6 set_fact:可以让你在远程受管理机器上执行脚本的过程中来计算我们需要的值 ,这些值可以被用在模板或者变量中。这些值有点类似setup模块中的参数,只不过setup模块是以单台机器为单位
4.7 pause:暂停模块
4.8 wait_for:等待模块,比如启动一个tomcat,怎么确认他是否启动成功, 用这个模块,当8080端口被监听的时候,就认为启动我完成
举例:
1
2
- name: wait for tomcat  start
   ait_for: port=8080 state=started



4.9 assemble:组装模块,如:把多个受管主机的文件合并成一个文件,当配置文件不允许包含的时候,这非常有用
举例:
1
2
3
4
5
6
7
8
- name: make adirectory in /opt   #在被管理主机opt下创建目录,属主属组root,权限0700
  file: path=/opt/sshkeys state=directoryowner=root group=root mode=0700
- name: copy ssh keys   #把dab、kate、mal分别放到上面两个item的位置,各执行一次
  
  copy:src=key/{{item}}.pub dest=/opt/sshkeys/{{item}}.pub owneroot group=rootmode=0600 with=_items:
       -dab
       -kate
        -mal



5.0 add_host:动态添加主机
      可以动态的添加受管主机到play中。我们可以使用uri模块从CMDB中获得主机信息然后添加他们。它还可以将主机加到组里面,如果组不存在还会自动创建,这个模块只需要主机名和组名两个参数,跟主机库存清单配置一样,我们还可以添加扩展的参数,像:ansible_ssh_user,ansible_ssh_port等。
5.1 group_by:动态添加主机组

   可以让我们根据主机的真实特性来进行分组,真实特性可以通过add_face来实现,group_by模块,只接受一个参数:key,同样组名的机器被分配到一个组里面。如果我们在这里使用变量,我们就可以把同一个操作系统类型,同一个拓补结构的或者其他我们希望拥有同样特性的主机分成一组,组可以在子play中、模板的目标选项被使用
举例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
---  
- name: hostgroup   
  hosts: vm1
   
  tasks:
     - group_by:  key=os_{{ ansible_distribution}}  #相当于定义一个变量,这个变量能获取到被管理端是什么系统类型,如果被管理端系统是centos就用yum装,如果是Ubuntu就用apt装  
   
     - name:centos
       hosts: os_CentOS
  
  tasks:
     - name: centos install apache
       yum: name=httpd state=latest
   
     - name:ubuntu
       hosts: os_Ubuntu
  tasks:
     - name: ubuntu install apache
       apt: pkg=httpd state=latest



5.2 get_url:下载模块
举例:
1
2
  - name: download conf
    get_url: url:www.baidu.com/conf dest:/etc/httpd/  mode=0755






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-142424-1-1.html 上篇帖子: Ansible-PlayBook的roles和Include 下篇帖子: Ansible Loops root权限 mysql 信息 用户 主机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表