anaible中playbook的使用
1 Playbook
playbook是由一个或多个play组成的列表
playbook文件使用YAML编写
2 YAML
YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。YAML是一个可读性高,用来表达数据序列化的格式。
特点:可读性好,和脚本语言交互性好,且容易实现,适用程序执行流梳理方式,可扩展性强
2.1 语法简介
-
在文件中用【—】开始,以【…】结尾,中间行书写文件内容,必须要严格遵守缩进的方式,同时对大小写敏感
-
key/value可以多行书写也可以一行书写:一行书写时用逗号(,)隔开
-
value可以是一个字符串,也可以是一个list
-
一个play必须要有name和tasks:
name是描述,一个name只能包含一个task tasks是动作
-
扩展名称yml或者yaml
2.2 YAML列表
方法1:用逗号分割
[Linux,C++,C++]
方法2 :
- Linux
- C++
- C++
安装多个软件时:
2.3 YAML的字典
字典的作用是存放键值
方式1 :name:westos
age:12
jobs:linux
方式2:{name: "westos", age: "12", jobs: "linux"}
2.4 playbook执行命令
执行playbook的命令:ansible-book xxx.yml 参数
常用参数
--check|-C ##检测
--syntax-check ##检测语法
--list-hosts ##列出hosts
--list-tags ##列出tag
--list-tasks ##列出task
--limit ##指定执行主机
-v -vv ##显示执行过程的详细信息
ansible-playbook test.yml -check ##预执行
ansible-playbook test.yml -C
ansible-playbook test.yml --syntax-check
##检测语法
ansible-playbook test.yml --list-hosts
ansible-playbook test.yml --list-tags
ansible-playbook test.yml --list-tasks
ansible-playbook test.yml -v
##-v显示详细信息
ansible-playbook test.yml -vv
##v的个数越多显示的信息越详细
2.5 Playbook的核心组件
name ##可选,建议使用多用于说明
hosts ##受控主机列表
tasks ##任务,用与选择执行部分代码
配置apache服务
--- ##开始
- name: config apache
hosts: list1
tasks:
- name: install apache
dnf:
name: httpd
state: latest
- name: start httpd
service:
name: httpd
state: started
enabled: yes
- name: allow firewall
firewalld:
service: http
permanent: yes
state: enabled
immediate: yes
...##结束
3 vim的设定技巧
- 编辑家目录下的配置文件:
~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et
setlocal##设定当前文件
ai ##自动退格对齐
ts ##tab建长度为2空格 tabstop=2
sw ##缩进长度为2 shiftwidth=2
et ##把tab键变成空格 expandtab