ansible之playbook的使用

1. playbook的简介

playbook是用YAML编写的文本文件,playbook的文件的扩展名一般为.yml。

1.1. playbook的编写格式:

  • 处于同一级别的数据元素,需要相同的缩进;
  • 同一个任务中的子项的缩进要大于父项;
  • 对大小写要求严格;
  • 使用缩进表示层级关系;
  • 缩进时只能使用空格键,不能使用tab键;
  • ‘#’表示注释;
  • 字符串需要用单引号或双引号引起来

1.2 playbook的编写示例:

--- 表示开头
- name: 要执行的任务名
  hosts: 写主机名或IP地址,all是主机清单里的所有主机,也可以使用*来匹配>但要注意的是'*',必须要用引号引起来
  tasks: 要执行的任务
    - name: 对任务的描述
      yum: 模块名,下面的都是键值对state后面的跟的是参数
        name: httpd (如安装httpd服务)
        state: present安装(absent卸载、latest安装最新版)
        enabled: yes(yes为开机自启) 

2. playbook的执行方式

ansible-playbook test.yml (这里的test.yml是你编写的playbook,他是作为参数进行传递的)

2.1 提高playbook输出的详细情况

下面是递进关系

参数作用
-v显示任务结果
-vv显示任务结果和任务配置
-vvv显示与受管主机的连接信息
- vvvv显示连接插件相关的额外详细程序选项,包括受管主机上的脚本执行情况以及执行的用户

2.2.playbook可以接的参数

参数作用
-C模拟执行playbook,显示执行结果不会真正的去执行
–syntax-check检查要执行的playbook的语法是否有错
–list-tasks列出playbook中会被执行的tasks
–list-hosts列出有哪些主机上会执行这个playbook

3. playbook的使用

// 创建一个名为zw的用户uid为2000
[root@node1 ~]# ansible-playbook user.yml 

PLAY [node2] *******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [node2]

TASK [创建用户] ********************************************************************
changed: [node2]

PLAY RECAP *********************************************************************
node2                      : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
---
- name: one
  hosts: node2
  tasks:
   - name: 用户
     user:
       name: zw
       uid: 2000
       state: present
// 多个play的组合使用,安装apache服务,并开机设置自启
[root@node1 ~]# ansible-playbook apache.yml 

PLAY [node2] *******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [node2]

[root@node1 ~]# ansible-playbook apache.yml 

PLAY [node2] *******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [node2]

TASK [httpd服务] *****************************************************************
changed: [node2]

TASK [设置httpd服务的开机自启] **********************************************************
changed: [node2]

PLAY RECAP *********************************************************************
node2                      : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

---
- name: one
  hosts: node2
  tasks:
    - name: httpd服务
      yum:
        name: httpd
        state: present
    - name: 设置httpd服务的开机自启
      service:
         name: httpd
         enabled: yes

3.1. play中的远程登录和特权升级

become:yes表示启动特权升级,no和false表示禁用
remote_user: 用户 表示连接受控端的哪个用户
利用普通用户创建一个用户

---
[root@node1 ~]# ansible-playbook test.yml 

PLAY [node2] *******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [node2]

TASK [创建一个用户] ******************************************************************
changed: [node2]

PLAY RECAP *********************************************************************
node2                      : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
- hosts: node2
  remote_user: admin
  become: yes
  tasks: 
    - name: 创建一个用户
      user:
        name: tom
        state: present

[root@node2 ~]# id admin 
uid=1000(admin) gid=1000(admin) 组=1000(admin)

[root@node2 ~]# id tom
id: “tom”:无此用户
[root@node2 ~]# id tom
uid=1001(tom) gid=1001(tom) 组=1001(tom)

4. 查找任务模块

命令作用
ansible-doc -l查看所有模块
ansible-doc 模块名查找指定的模块

5. 编写多行字符串的方法

  • 可以利用管道符表示要保留的字符串中的换行字符
  • 使用大于号字符来表示换行字符转换为空格并且行内的空白将被删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值