ansible————playbook

一、playbook和ad hoc命令

ad hoc命令是单行,一个简单的任务,运行一次。ansible真正强大的地方是使用ansible的playbook重复运行多次复杂的任务。

一个play是是一组有序的任务,该paly对应着在inventory被选择的主机。一个playbook是一个包含若干个paly的text文本文件。

plays让你将又长又复杂的管理任务变的简单。在palybook中,你可以用易懂和立即能运行的格式将tasks保存在play中。tasks本身由于书写方式的原因,就是一个一部一部部署你的架构或者应用的文档

二、playbook的格式

playbook通常被定义为扩展名为yml的文件。playbook主要使用空格字符来指定它的数据结构。 YAML没有严格的需求,不强制要求多少个空格。但是有两个基本规则:

  • 数据元素在同级必须有同样的缩进

  • 一个对象是另一个对象的子对象时必须比父对象缩进更多

注意:只有空格可以使用,不能用tab。如果你使用vim编辑器,你可以通过在你的家目录下创建.vimrc文件,并且添加"autocmd FileType yaml setlocal ai ts=2 sw=2 et"来将tab变成两个空格。

bash 复制代码
---                                          ## 表示剧本开始
- name: this is my first play                ## 第一个play的名字
  hosts: hostname                            ## 被管理主机
  remote_user:                               ## 使用那个用户来执行,优先级最高
  become: yes                                ## 是否提权,前提是该用户拥有能够提权的操作
  tasks:                                    
    - name: create a new user                ## task的名字
      user:                                  ## 执行的模块
        name: nana                           
        state: present

三、写一个简单的playbook

bash 复制代码
[root@control ansible_manage]# cat play_book/first.yml 
---                                          ## 表示剧本开始
- name: this is my first play                ## 第一个play的名字
  hosts: manage3                             ## 被管理主机
  tasks:                                    
    - name: create a new user                ## task的名字
      user:                                  ## 执行的模块
        name: nana                           
        state: present

级别上play大于task大于module,平级缩进要一样

这个playbook,只有一个play,这个play的被管理主机是manage3,里面有一个task,这个task的名字叫做"create a new user"。这个task使用的user模块,创建了nana用户

运行playbook

bash 复制代码
[root@control ansible_manage]# ansible-playbook play_book/first.yml

PLAY [this is my first play] ***************************************************************************************
TASK [Gathering Facts] *********************************************************************************************
ok: [manage3]
TASK [create a new user] *******************************************************************************************changed: [manage3]
PLAY RECAP *********************************************************************************************************manage3                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

四、playbook的详细输出

运行的时候显示详细信息

  • -v

  • -vv:常用

  • -vvv

  • -vvvv

bash 复制代码
## 不加-v
[root@control ansible_manage]# ansible-playbook play_book/remove_nana_user.yaml

PLAY [this is my first play] ***************************************************************************************
TASK [Gathering Facts] *********************************************************************************************ok: [manage3]

TASK [create a new user] *******************************************************************************************changed: [manage3]

PLAY RECAP *********************************************************************************************************manage3                    : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

## 加一个-v
[root@control ansible_manage]# ansible-playbook play_book/remove_nana_user.yaml -v
Using /root/ansible_manage/ansible.cfg as config file

PLAY [this is my first play] ***************************************************************************************
TASK [Gathering Facts] *********************************************************************************************ok: [manage3]

TASK [create a new user] *******************************************************************************************ok: [manage3] => {"changed": false, "name": "nana", "state": "absent"}    ## 多了这一行

PLAY RECAP *********************************************************************************************************manage3                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

## 加-vv
[root@control ansible_manage]# ansible-playbook play_book/remove_nana_user.yaml -vv
ansible-playbook [core 2.14.9]
  config file = /root/ansible_manage/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.9.18 (main, Sep  7 2023, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] (/usr/bin/python3) 
  jinja version = 3.1.2
  libyaml = True
Using /root/ansible_manage/ansible.cfg as config file
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: remove_nana_user.yaml ************************************************************************************1 plays in play_book/remove_nana_user.yaml

PLAY [this is my first play] ***************************************************************************************
TASK [Gathering Facts] *********************************************************************************************task path: /root/ansible_manage/play_book/remove_nana_user.yaml:2
ok: [manage3]

TASK [create a new user] *******************************************************************************************task path: /root/ansible_manage/play_book/remove_nana_user.yaml:5
ok: [manage3] => {"changed": false, "name": "nana", "state": "absent"}

PLAY RECAP *********************************************************************************************************manage3                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

假装运行,只是模拟运行,但是实际上没有执行

  • -C
相关推荐
赶紧回家去10 小时前
Ansible基本使用
运维·ansible
我就是全世界1 天前
ansible详细介绍和具体步骤
ansible
福大大架构师每日一题1 天前
27.9 调用go-ansible执行playbook拷贝json文件重载采集器
golang·json·ansible·prometheus
SG.xf1 天前
Ansible
运维·ansible
避凉闲庭1 天前
ansible开局配置-openEuler
linux·运维·ansible·脚本·openeuler·免密登录·批量化
运维小白。。4 天前
Ansible 批量部署
ansible
peanutfish9 天前
Chapter 9 RH294 RHEL Automation with Ansible
linux·ansible·yaml
不喜欢就睡大觉9 天前
自动化工具:Ansible
运维·自动化·ansible
我要做计算机大神10 天前
Ansible概述
git·ansible
YCyjs10 天前
Ansible自动化运维管理工具
ansible