ansible-playbook学习笔记(一)

ansible-playbook

Tag:YAML语言

一、 ansbile-playbook是一系列ansible命令的集合,利用yaml语言编写。

YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。YAML 语言的设计目标,就是方便人类读写。

YAML Ain't Markup Language,即YAML不是XML。不过,在开发的这种语言时,YAML的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。它的基本语法规则如下:

大小写敏感

使用缩进表示层级关系

缩进时不允许使用Tab键,只允许使用空格。

缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

#表示注释,从这个字符一直到行尾

二、YAML数据类型详解

-支持的数据类型
1、纯量(scalars):单个的、不可再分的值
数据最小的单位、不可以再分割。类似python中单个变量

2、数组:一组按次序排列的值,又称为序列(sequence)/列表(list) 
与python的list数组结构类似,数组元素实用短横线"-"开头

-jack                 #也可以写成一行[jack,harry.sunny]
-harry                 对应到python的list写法如下
-sunny                  ['jack','harry','sunny']

3、对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)
对象的一组键值对,使用冒号结构表示。类似python中的字典数据结构 key:value(字典无序)
platformName: Android
platformVersion: 6.0.1
## yaml也允许另一种写法,将所有键值对写成一个行内对象
{platformName: Android,platformVersion: 6.0.1}
冒号后面必须要有空格!对应python字典的写法如下:
{'platformName':'Android','platformVersion':'6.0.1'}
examples
playbook:
name: tom
age: 27
wife: 
  name: jerry
  age: 25
children: 
  - name: jack
    age: 15
  - name: Bob
    age: 14
    
yaml写法:wife: {
   name:jerry,age:25}
python写法如下:
wife: {
   
		'name':'jerry',
		'age':'25'
}

yaml写法:children: [{
   name:jack,age:15},{
   name:Bob,age:14}]
python写法如下:
children: [
	{
   
		'name':'jack',
		'age':'15'
	},
	{
   
		'name':'Bob',
		'age':'14'
}
]

yaml写法:
{
   name:tom,age:27,wife:{
   name:jerry,age:25},children: [{
   name:jack,age:15},{
   name:Bob,age:14}]}
python写法如下:
{
    
'name':'tom',
'age':'27',
'wife':'{
   'name':'jerry','age':'25'}',
'children':' [{
   'name':'jack','age':'15'},{
   'name':'Bob','age':'14'}]'
}           ## 字典嵌套列表嵌套字典

Tag2:playbook

三、playbook基本语法

配置项说明:
name:对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值
hosts:指定对哪些被管理机进行操作;
remote_user:指定在远程被管理机上执行操作时使用什么用户,如不指定,则使用ansible.cfg中配置的remote_user
gather_facts:指定在执行任务之前,是否先执行setup模块获取主机相关信息,如未用到,可不指定
vars:定义后续任务中会使用到的变量,如未用到,可不指定
tasks:定义具体需要执行的任务
name:对任务的描述,在执行过程中会打印出来。
user:指定调用user模块;
name:user模块里的一个参数,用于指定创建的用户名称

四、ansible-playbook常用选项

1. 打印详细信息
-v:打印任务运行结果
-vv:打印任务运行结果以及任务的配置信息
-vvv:包含了远程连接的一些信息
-vvvv:Adds extra verbosity options to the connection plug-ins,including the users being used in the managed hosts to execute scripts, and what scripts have been executed

2. 校验playbook语法
# ansible-playbook --syntax-check  manage_apache.yml   
playbook: manage_apache.yml

3. 测试运行playbook
通过-C选项可以测试playbook的执行情况,但不会真的执行:
# ansible-playbook -C  manage_apache.yml 

五、playbook的结构说明

playbook是由一个或多个"play"组成的列表。play的主要功能就是对一组主机应用play中定义好的task。从根本上来讲一个task就是对ansible一个module的调用。而将多个play按照一定的顺序组织到一个playbook中,我们称之为编排。

playbook主要有以下四部分构成:
1、Target section: 用于定义将要执行playbook的远程主机组及远程主机组上的用户,还包括定义通过什么样的方式连接远程主机(默认ssh)(hosts)

2、Variable section: 定义playbook运行时需要使用的变量

3、Task section: 定义将要在远程主机上执行的任务列表(tasks)

4、Handler section: 定义task执行完成以后需要调用的任务,触发器(handler)
1、target section

playbook中的远程用户和ad-hoc中的使用没有区别,默认不定义,则直接使用ansible.cfg配置中的用户相关的配置。也可在playbook中定义如下

- name: create files
  hosts: datacenter
  remote_user: ansible
  become: yes
  become_mothod: sudo
  become_user: root
  tasks:
    - name: create files
      file:
        path: /tmp/redhat
        state: touch

playbook中的hosts即inentory中的定义主机与主机组,在这里也完全适用。

- name: start mariadb
  hosts: db,&london
  tasks:
    - name: start mariadb
      service:
        name: mariadb
        state: started
2、task section

play的主体部分是任务列表。任务列表中的各任务按次序逐个在hosts中指定的所有主机上执行,在所有主机上完成第一个任务后再开始第二个。在自上而下运行某playbook时,如果中途发生错误,则整个playbook会停止执行,由于playbook的幂等性,playbook可以被反复执行,所以即使发生了错误,在修复错误后,再执行一次即可。

tasks:
  - name: make sure apache is running
    service: 
      name: httpd
      state: started
      
  - name: disable selinux
    command: /sbin/setenforce 0 
<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值