6.playbook基本使用

Ansible Playbook简介

ansbile-playbook是一系列ansible命令的集合,利用yaml 语言编写。playbook命令根据自上而下的顺序依次执行。同

时,playbook开创了很多特性,它可以允许你传输某个命令的状态到后面的指令,如你可以从一台机器的文件中抓取内容

并附为变量,然后在另一台机器中使用,这使得你可以实现一些复杂的部署机制,这是ansible命令无法实现的。

playbook通过ansible-playbook命令使用,它的参数和ansible命令类似,如参数-k(–ask-pass) 和 -K (–ask-sudo) 来询问ssh密码

和sudo密码,-u指定用户,这些指令也可以通过规定的单元写在playbook 。

ansible-playbook的简单使用方法: ansible-playbook example-play.yml 。

eg3.1:简单的Playbook

---
- name: Configure important user consistently
  hosts: servera.lab.example.com
  tasks:
    - name:newbie exists with UID 4000
      user: 
        name:newbie
        uid:4000
        state:present

Playbook是以YAML格式编写的文本文件,通常使用扩展名yml保存。Playbook使用空格字符缩进来表示其数据结构。YAML对用于缩进的空格数量没有严格的要求,但必须有两个基本的规则。

●处于层次机构中同一级别的数据元素(例如同一列表的项目)必须具有相同的缩进量。

●如果项目属于其他项目的子项,其缩进量必须大于父项。

重要

如果您使用vi文本编辑器,您可以应用一些设置,以便能更加轻松地编辑playbook。eg,在$HOME/ .vimrc 文件中添加下面这行后,如果vi检测到您在编辑YAML文件,它将Tab键按下时执行一个双空格缩进,并自动缩进后续行。

vim ~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et

Playbook基本语法

下面是一个简单的ansible-playbook示例,可以了解其构成:

# cat user.yml
- name: create user
 hosts: all
 remote_user: root
 gather_facts: false
 vars:
 user:"test"
 tasks:
 - name: create user
 user: name="{{ user }}"

配置项说明:

●name :对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值

●hosts :指定对哪些被管理机进行操作;

●remote_user :指定在远程被管理机上执行操作时使用什么用户,如不指定,则使用ansible.cfg中配置的

remote_user

●gather_facts :指定在执行任务之前,是否先执行setup模块获取主机相关信息,如未用到,可不指定

●vars :定义后续任务中会使用到的变量,如未用到,可不指定

●tasks :定义具体需要执行的任务
在这里插入图片描述

同样,如果想实现把这个新增的用户删除,只需将该playbook文件的最后一行替换为如下行再执行相应的playbook即可:

user: name="{{ user }}" state=absent remove=yes

Playbook简单示例

下面通过playbook管理一个httpd服务器来简单了解下playbook的应用:

1.创建playbook

# cat manage_apache.yml
- name: play to setup web server
 hosts: all
 tasks:
 - name: latest httpd version installed
 yum:
 name: httpd
 state: latest
 
 - name: correct index.html is present
 copy:
 src: files/index.html
 dest: /var/www/html/index.html
 
 - name: start httpd service
 service:
 name: httpd
 state: started
 enabled: true

2. 执行playbook

运行playbook

ansible-playbook site.yml
# ansible-playbook manage_apache.yml 
PLAY [play to setup web server] ***********************************************************
TASK [Gathering Facts] ********************************************************************
ok: [10.1.61.187]
TASK [latest httpd version installed] *****************************************************
changed: [10.1.61.187]
TASK [correct index.html is present] ******************************************************
changed: [10.1.61.187]
TASK [start httpd service] ****************************************************************
changed: [10.1.61.187]
PLAY RECAP ********************************************************************************
10.1.61.187 : ok=4 changed=2 unreachable=0 failed=0 skipped=0

ansible-playbook常用选项

1. 打印详细信息

ansible-playbook 命令提供的默认输出不提供详细的任务执行信息。ansible-playbook -v

命令提供了额外的信息,总共有四个级别。

●-v:打印任务运行结果

●-vv:打印任务运行结果以及任务的配置信息

●-vvv:包含了远程连接的一些信息

●-vvvv:Adds extra verbosity opƟons to the connecƟon plug-ins,including the users being used in the managed hosts to

execute scripts, and what scripts have been executed

# ansible-playbook manage_apache.yml -vv
选项描述
-v显示任务结果。
-vv任务结果和任务配置都会显示
-vvv包含关于与受管主机连接的信息
-vvvv增加了连接插件相关的额外详细程度选项,包括受管主机上用于执行脚本的用户,以及所执行的脚本

2. 校验playbook语法

# ansible-playbook --syntax-check manage_apache.yml 
playbook: manage_apache.yml

3.测试运行playbook

通过-C选项可以测试playbook的执行情况,但不会真的执行:

# ansible-playbook -C manage_apache.yml 
PLAY [play to setup web server] ***********************************************************
TASK [Gathering Facts] ********************************************************************
ok: [10.1.61.187]
TASK [latest httpd version installed] *****************************************************
ok: [10.1.61.187]
TASK [correct index.html is present] ******************************************************
ok: [10.1.61.187]
TASK [start httpd service] ****************************************************************
ok: [10.1.61.187]
PLAY RECAP ********************************************************************************
10.1.61.187 : ok=4 changed=0 unreachable=0 failed=0 skipped=0

Multple Plays

# This is a simple playbook with two plays
- name: first play
 hosts: web.example.com
 tasks:
 - name: first task
 yum:
 name: httpd
 status: present
 - name: second task
 service:
 name: httpd
 state: started
 
- name: second play
 hosts: db.example.com
 tasks:
 - name: first task
 yum:
 name: mariadb-server
 status: present
 - name: second task
 service:
 name: mariadb
 state: started

实施多个PLAY

---
# This is a simple playbook with two plays

- name: first play
  hosts: web.example.com
  tasks:
    - name: first task
      yum:
        name: httpd
        status:present
    
    - name: second task
      service:
        name: httpd
        enabled: true
- name: second play
  hosts: database.example.com
  tasks:
    - name: first task
      service:
        name: mariadb
        enabled: true

YAML 注释

注释也可以用于提高可读性。在YAML中,编号或井号符号(#)右侧的所有内容都是注释。如果注释的左侧有内容,请在该编号符号前面加一个空格。

# This is a YAML comment
some data # This is also a YAML comment

YAML字符串

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TN9TtAVg-1649737325814)(C:\Users\17589\AppData\Roaming\Typora\typora-user-images\image-20220411200111641.png)]

this is a string
'this is another string'
"this is yet another a string"

编写多行字符串有两种方式。可以使用竖线(|)字符表示要保留字符串中的换行字符。

include_newlines: |
        Example Company
        123 Main Street
        Atlanta,GA 30303
fold_newlines: >
        This is an example
        of a long string,
        that will become
        a single sentence once folded.

YAML字典

在这里插入图片描述

YAML列表

在这里插入图片描述
在这里插入图片描述

放行防火墙

- name:firewalld permits access to httpd service
  firewalld:
    service: http	
    permanent: true|yes               # 永久生效
    state: enabled
    immediate: yes
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值