ansible学习playbook入门
Posted Linux微堂笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible学习playbook入门相关的知识,希望对你有一定的参考价值。
什么是playbook
playbook是以 YAML 文件作为载体
playbook可以描述多个任务的集合
playbook使目标主机按照既定顺序执行任务以达到期望状态
通过ansible-playbook命令执行
什么是YAML语言
playbook是一种人性化的数据格式定义语言
playbook具有:结构感强、可读性好、通用的数据穿行化格式
语法要求:
以 '---' 作为起始句
大小写敏感
使用缩进表示层级关系(一般用2个空格表示缩进)
缩进是不允许使用tab键,只许使用空格
缩进的空格数目不重要,相同层级的元素左侧对齐即可
示例图:
示例图讲解
对象: 键值对的集合,又称为映射(mapping)/ 哈希(hashes)/ 字典(dictionary)
name: David
job: Developer
在python中的表示: {"name":"David","job":"Developer"}
数组: 一组按次序排列的值,又称为序列(sequence) / 列表(list)
- apple
- orange
在python中的表示: ["apple","orange"]
纯量(scalars): 单个的、 不可再分的值
tasks:
- name: Install
yum: yum...
- name: copy
copy: copy...
在python中的表示:
{"tasks":["name":"Install","yum":"yum...",{"name":"copy","copy":"copy..."}]}
play组成部分:
Target Section: 定义将要执行playbook的远程主机组及属性
Variable Section: 定义playbook运行时需要使用的变量
Task Section: 定义将要在远程主机上执行的任务列表
Target Section
hosts: 定义远程的主机组
remote_user: 执行该任务组的用户
sudo: 如果设置为yes,以sudo权限执行命令
gather_facts: 默认收集setup模块传递来的变量,可禁止
- host: webservers
remote_user: root
sudo: yes
gather_facts: no
......
Variable Section
vars: 直接写入对象形式的变量名及其值
vars_files: 引入变量所在的文件
...
...
vars:
- http_port: 8080
- max_clients: 200
vars_files:
- /tmp/vars
...
...
Task Section
由任务组成的列表,其中包含任务名,模块以及模块参数
tasks:
- name: aaa
module 1:
...... # module 1 args
- name: bbb
module 2:
...... # module 2 args
- name: ccc
module 3:
...... # module 3 args
系统变量
setup模块(默认gather_facts = yes)
自动变量
Inventory文件
Playbook文件
变量文件
引用变量方式: {{ var }} 双大括号 示例
...
...
- name: edit index
shell: sed -i 's/ipaddr/{{ ansible_default_ipv4.address }}/;s/hostname/{{ ansible_hostname }}/' /var/www/html/index.html
...
...
运行Playbook方式
YAML语法有3中检查方式:
python命令
python -c 'import yaml,sys; print yaml.load(sys.stdin)' < ./webservers.yaml
网页方式
http://www.yamllint.com/
ansible命令工具
# 执行playbook
ansible-playbook -i inventory webservers playbook.yml
# 语法检查
ansible-playbook -i inventory webservers playbook.yml --syntax-check
# 输出匹配主机列表,不执行其它操作
ansible-playbook -i inventory webservers playbook.yml --list-hosts
# 列出所有可用的标记
ansible-playbook -i inventory webservers playbook.yml --list-tags
# 列出将要执行的所有任务
ansible-playbook -i inventory webservers playbook.yml --list-tasks
以上是关于ansible学习playbook入门的主要内容,如果未能解决你的问题,请参考以下文章
Ansible 学习总结—— Ansible playbook 入门详解
Ansible playbooks入门和编写规范Ansible Playbooks常用模块介绍常用模块集合