YAML剧本

ansible YAML语法  playbook剧本
playbook剧本要求按照YAML语法格式编写,可调用多个模块
YAML格式
#为注释 第一行为(---)
键值(key/value) 例 a:  11   key:value使用":"分隔,“:”后面必须有空格
“-”表示数组,一个变量有多个值
相同层级缩进必须对齐,缩进代表层级关系(缩进用两个空格)
不能使用tab键(不能使用tab键缩进)
区分大小写
扩展名yml或者yaml
跨行数据需要使用>或者|,其中|会保留换行符
"a"
     -"1"        两种写法效果一样    "a" : ["1","2","3"]
     -"2"
     -"3"

- a :
      -11 
- a表示还有其余数组,a还有其余同级数组
-11 表示目前有一个变量还可以继续写
 a : 11 有且仅有一个变量

#人物描述
---   
- 姓名: 李白
  年龄: 61
  作品: 蜀道难
  好友: 汪伦
加横线表示四个人,一个横线一个值***
此处不加横线表示一个人(一个值)

跨行数据需要使用>或者|,其中|会保留换行符
当一个变量值太长  用“|”“>”表示换行,直到缩进消失
a :  |      多行                                 
    dgfgfhghgfh
     retrgfhgf
12432
 a : >    一行  
    dgfgfhghgfh
     retrgfhgf
12432playbook采用YAML格式编写
playbook文件中由一个或多个play组成
每个play中可以包含:
hosts(主机)、
tasks(任务)、
vars(变量)    等元素组成

使用ansible-playbook命令运行playbook剧本

 vim ~/ansible/test.yml 编写脚本
---
- hosts: node1
  tasks:
  - name: aaa
    ping:
 ansible-playbook ~/ansible/test.yml 执行脚本
多任务
[root@control ansible]# vim ~/ansible/test.yml 
- hosts: test,webserver
  tasks:
      - name: This is my first playbook     name后面的内容可以任意
        ping:
      - name: Run a shell command
        shell: touch ~/shell.txt
ansible-playbook ~/ansible/test.yml 执行脚本
可以使用-f自定义并发量
多个play的Playbook文件
[root@control ansible]# vim ~/ansible/test.yml
#第一个play剧目
---
- hosts: test
  tasks:
      - name: This is first play
        ping:
#第二个play剧目
- hosts: webserver
  tasks:
      - name: This is second play
        ping:

编写剧本 创建用户
[root@control ansible]# vim ~/ansible/test_john.yml
---
- hosts: webserver
  tasks:
    - name: Add the user 'johnd' 
      user:
        name: johnd
        uid: 1040
        group: daemon
        password: "{{ '123' | password_hash('sha512') }}"
[root@control ansible]# ansible-playbook ~/ansible/test_john.yml
到node3,node4上查看此用户

 ansible-doc user查看帮助文档
 找到  EXAMPLES (有剧本格式)
 G跳到文档末尾 gg跳到开头

vim ~/ansible/user_james.yml
---
- hosts: webserver
  tasks:    
    - name:  Add 'james' with a bash shell
      user:
        name: james
        shell: /bin/bash
        groups: bin,adm
        password: "{{ '123' | password_hash('sha512') }}" 
[root@control ansible]# ansible-playbook ~/ansible/user_james.yml

自动做逻辑卷(parted)
 [root@control ansible]# vim ~/ansible/lvm.yml
---
- hosts: node2                            
  tasks:
    - name: 
      parted:                                 调用parted模块进行分区         
        device: /dev/sda            对/dev/vdb磁盘进行分区(磁盘名称不要照抄)
        label: gpt                          分区表类型为gpt,或msdos
        number: 1                           分区编号(创建第几个分区)
        state: present                     present是创建分区,absent是删除分区
        part_start: 1MiB                   分区的开始位置(默认从最开始位置分区)
        part_end: 1GiB                     分区的结束位置(不写就分到磁盘最后位置)
    - name:    可为空
      lvg:                                          调用lvg模块,创建VG卷组
        vg: my_vg                             要创建的卷组名称
        pvs: /dev/vdb1                     使用哪个分区创建PV
    - name: Create a logical volume of 512m          第三个任务的描述信息
      lvol:                                 调用lvol模块创建LV
        vg: my_vg                          使用哪个VG创建LV
        lv: my_lv                          需要创建的LV名称
        size: 512m                         要创建的LV大小,可以不指定单位,默认单位m

Available 已经有的组包
Installed 已安装
[root@control ansible]# vim ~/ansible/package.yml
---
- hosts: webserver                      
    - name: 
      tasks:
      yum:                                 #调用yum模块安装软件
        name:                              #安装软件的名字,它的值有多个,使用数组-
          - httpd                         
          - mariadb                       
          - mariadb-server              
    - name:
      yum:                                  调用yum模块安装软件组包
        name: "@RPM Development Tools"        安装哪个组包,@是关键词
    - name: 
      yum:                                  调用yum模块升级软件
        name: '*'                           
        state: latest                       latest代表升级软件

setup模块
ansible_facts用于采集被管理设备的系统信息,所有收集的信息都被保存在变量中,每次执行playbook默认第一个任务就是Gathering Facts,使用setup模块可以查看收集到的facts信息。

ansible test -m setup
 "ansible_ .....  :  ...RedHat"此格式就是一个变量

 "ansible_apparmor": {
            "status": "disabled"

        },         如果不是ansible_开始的变量不能用,需要找到他的父目录
ansible_apparmor.status=disabled 此变量按这个格式写

debug模块
debug模块可以显示变量的值,可以辅助排错,通过msg可以显示变量的值,变量需要使用{{}}扩起来。
[root@control ansible]# vim ~/ansible/debug.yml
---
- hosts: test
  tasks:
    - debug:
        msg: "zhu ji ming :{{ ansible_hostname }}"

    - debug:
        msg: "nei cun da xiao :{{ ansible_memtotal_mb }}"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值