文章目录
- playbook介绍
- 语法介绍
- 示例一:检测用户
- 示例二 : 安装httpd
- 示例三 确保服务开机启动
- 示例四 更改默认发布页
- 实例五 配置火墙
- 查看帮助文档 ansible-doc
- 管理变量和事实
- ansible 变量简介
- 命名变量
- 定义变量
- 在 playbook 中定义变量
playbook介绍
playbook是ansible用于配置,部署,和管理被控节点的剧本。
通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态。playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成。也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情
语法介绍
playbook由YMAL语言编写 yaml 格式通常以 yml 为扩展名,yaml 对于缩进量没有严格要求,()但是有两个基本原则:
1.处于同一层次结构中同一级别的数据元素必须具有相同的缩进量
2.如果项目属于其他项目的子项,其缩进量必须大于父项
示例一:检测用户
--- #开头三个破折号,文档的开始标记
- name: Check User #可选,但是建议使用
hosts: all
tasks:
- name: User
user:
name: zouhaiqiang666
uid: 1000
state: present
... #结尾三个省略号,结束标记(通常省略)
play 本身是一个键值对集合,同一 play 中的键应当使用相同的缩进量
执行结果:
示例二 : 安装httpd
1---
2 - name: Setup Webserver
3 hosts: webservers
4 tasks:
5 - name: Http Installed
6 yum:
7 name: httpd
8 state: latest
9 ...
执行结果:
示例三 确保服务开机启动
1 ---
2 - name: Set Webservers
3 hosts: webservers
4 tasks:
5 - name: Install Apache
6 yum:
7 name: httpd
8 state: latest
9 - name: Enable Apache
10 service:
11 name: httpd
12 state: started
13 enabled: true
14 ...
执行结果:
示例四 更改默认发布页
10 - name: Change Index
11 copy:
12 src: index.html
13 dest: /var/www/html/index.html
执行结果:
实例五 配置火墙
10 - name: Configure firewall
11 firewalld:
12 service: http
13 state: enabled
14 permanent: yes
15 immediate: yes
测试结果:
查看帮助文档 ansible-doc
ansible-doc -l #列出所有模块
ansible-doc yum #列出 yum 的用法和示例
# ansible-doc -s yum #终端中输出 yum 模块中各参数的用法
其实我们常用的模块仅仅只占其中一小部分
如果要查看每个模块具体用法
管理变量和事实
ansible 变量简介
变量可能包含下面这些值:
要创建的用户、
要安装的软件包、
要重启的服务、
要删除的文件、
要从互联网检索的文档
命名变量
变量名称必须以字母开头,并且只能含有字母、数字和下划线
错误 | 正确 |
web server | web_server |
westos.file | remote_file |
1st file | file1 |
定义变量
三个范围级别
全局范围:从命令行或 ansible 配置设置的变量
play 范围:在 play 和相关结构中设置的变量
主机范围:由清单、事实收集或注册的任务,在主机组和个别主机上设置的变量
如果多个级别上定义了相同名称的变量,优先采用级别最高的变量,窄范围优先于广范围
在 playbook 中定义变量