赞
踩
yaml 文件的文件名 , 一般以 yml 或 yaml 作为扩展名
文件一般以 — 作为第一行 , 不是必须的 , 但是常用
键值对使用冒号 : 表示 , 冒号后必须有空格
数组使用 - 表示 , - 后面必须有空格
相同的层级必须有相同的缩进 , 如果缩进不对则语言错误.
每一级缩进建议 2个空格
全文不能用 tab 缩进 , 必须用 空格 缩进
# 一般写法
name=szhou
number=(1 5 6 70 88 99 100)
# YAML 写法
name= szhou
number:
- 1
- 5
- 6
- 70
- 88
- 99
- 100
# 文件位置和名字是固定的,用于设置vim的格式
[root@pubserver ansible]# vim ~/.vimrc
set ai # 设置自动缩进
set ts=2 # 设置按tab键,缩进2个空格
set et # 将tab转换成相应个数的空格
--- - 名字: 猴王初问世 职员表: 猴哥, 大马猴 场景: - 名字: 石头裂开了 - 名字: 天宫震颤了 - 名字: 官封弼马温 职员表: 猴哥, 玉皇大帝 场景: - 名字: 太白金星骗猴哥 - 名字: 猴哥天宫放马
# 编写用于测试连通性的playbook,相当于执行ansible all -m ping [root@pubserver ansible]# vim test.yml --- - hosts: all tasks: - ping: [root@pubserver ansible]# ansible-playbook test.yml # 执行playbook # 以上更规范的写法如下: [root@pubserver ansible]# vim test.yml --- - name: test network # play的名字,可选项 hosts: all # 作用于所有的主机 tasks: # 任务 - name: test via ping # 第1个任务的名字,可选项 ping: # 第1个任务使用的模块 [root@pubserver ansible]# ansible-playbook test.yml # 执行playbook # 在dbs组的主机和web1上创建/tmp/demo目录,权限是0755。将控制端/etc/hosts拷贝到目标主机的/tmp/demo中 [root@pubserver ansible]# vim fileop.yml --- - name: create dir and copy file hosts: dbs,web1 # 这里的名称,必须出现在主机清单文件中 tasks: - name: create dir file: path: /tmp/demo state: directory mode: '0755' - name: copy file copy: src: /etc/hosts dest: /tmp/demo/hosts # 执行playbook [root@pubserver ansible]# ansible-playbook fileop.yml # 在webservers组中的主机上,创建用户bob,附加组是adm;在db1主机上,创建/tmp/hi.txt,其内容为Hello World. [root@pubserver ansible]# vim two.yml --- - name: create user hosts: webservers tasks: - name: create bob user: name: bob groups: adm - name: create file hosts: db1 tasks: - name: make file copy: dest: /tmp/hi.txt content: "Hello World" [root@pubserver ansible]# ansible-playbook two.yml
| 和 > 的区别
“>” 把多行合并为一行
# 通过copy模块创建/tmp/1.txt,文件中有两行内容,分别是Hello World和ni hao [root@pubserver ansible]# vim f1.yml --- - name: play 1 hosts: webservers tasks: - name: mkfile 1.txt copy: dest: /tmp/1.txt content: | Hello World! ni hao. [root@pubserver ansible]# ansible-playbook f1.yml # 查看结果 [root@web1 ~]# cat /tmp/1.txt Hello World! ni hao. # 通过copy模块创建/tmp/2.txt,文件中有一行内容,分别是Hello World! ni hao [root@pubserver ansible]# vim f2.yml --- - name: play 1 hosts: webservers tasks: - name: mkfile 2.txt copy: dest: /tmp/2.txt content: > Hello World! ni hao. [root@pubserver ansible]# ansible-playbook f2.yml [root@web1 ~]# cat /tmp/2.txt Hello World! ni hao.
# 在web1主机上,对/dev/vdc进行分区,创建1个1GB的主分区 [root@pubserver ansible]# vim disk.yml --- - name: disk manage hosts: web1 tasks: - name: create a partition parted: device: /dev/vdc number: 1 state: present part_end: 1GiB [root@pubserver ansible]# ansible-playbook disk.yml # 在目标主机上查看结果 [root@web1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT .. ... vdc 253:32 0 20G 0 disk `-vdc1 253:33 0 1023M 0 part # 继续编辑disk.yml,对/dev/vdc进行分区,创建1个新的5GB的主分区 [root@pubserver ansible]# vim disk.yml ... ... - name: add a new partition parted: device: /dev/vdc number: 2 state: present part_start: 1GiB part_end: 6GiB [root@pubserver ansible]# ansible-playbook disk.yml [root@web1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT ... ... vdc 253:32 0 20G 0 disk |-vdc1 253:33 0 1023M 0 part `-vdc2 253:34 0 5G 0 part # 继续编辑disk.yml,创建名为my_vg的卷组,它由上面创建的vdc1和vdc2构成 [root@pubserver ansible]# vim disk.yml ... ... - name: create my_vg lvg: vg: my_vg pvs: /dev/vdc1,/dev/vdc2 # 继续编辑disk.yml,在my_vg卷组上创建名为my_lv的逻辑卷,大小1G [root@pubserver ansible]# vim disk.yml ... ... - name: create my_lv lvol: vg: my_vg lv: my_lv size: 1G # 继续编辑disk.yml,格式化my_lv为ext4 [root@pubserver ansible]# vim disk.yml ... ... - name: mkfs my_lv filesystem: dev: /dev/my_vg/my_lv fstype: ext4 # 继续编辑disk.yml,将my_lv挂载到/data [root@pubserver ansible]# vim disk.yml ... ... - name: mount my_lv mount: path: /data src: /dev/my_vg/my_lv fstype: ext4 state: mounted # 完整的disk.yml如下 --- - name: disk manage hosts: web1 tasks: - name: create a partition parted: device: /dev/vdc number: 1 state: present part_end: 1GiB - name: add a new partition parted: device: /dev/vdc number: 2 state: present part_start: 1GiB part_end: 6GiB - name: create my_vg lvg: vg: my_vg pvs: /dev/vdc1,/dev/vdc2 - name: create my_lv lvol: vg: my_vg lv: my_lv size: 1G - name: mkfs my_lv filesystem: dev: /dev/my_vg/my_lv fstype: ext4 - name: mount my_lv mount: path: /data src: /dev/my_vg/my_lv fstype: ext4 state: mounted
# 在webservers组中的主机上,安装httpd、php、php-mysqlnd [root@pubserver ansible]# vim pkg.yml --- - name: install pkgs hosts: webservers tasks: - name: install web pkgs # 此任务通过yum安装三个包 yum: name: httpd,php,php-mysqlnd state: present # 安装多个软件包,还可以写为: --- - name: install pkgs hosts: webservers tasks: - name: install web pkgs yum: name: [httpd,php,php-mysqlnd] state: present # 安装多个软件包,还可以写为: --- - name: install pkgs hosts: webservers tasks: - name: install web pkgs yum: name: - httpd - php - php-mysqlnd state: present
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。