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
相关推荐
AquaPluto11 天前
Ansible-Playbook详解
ansible·playbook·roles
chairon18 天前
Ansible:playbook的高级用法
linux·运维·服务器·ansible·apache
树下一少年18 天前
ansible+docker+docker-compose快速部署4节点高可用minio集群
docker·容器·ansible·docker-compose·minio集群
千航@abc19 天前
Ansible 实战:Roles,运维的 “魔法函数”
ansible·playbook·roles·角色·模版·剧本
一个高效工作的家伙19 天前
ansible可视化自动化平台-semaphore
ansible
树下一少年19 天前
通过ansible+docker-compose快速安装一主两从redis+三sentinel
redis·docker·ansible·sentinel·docker-compose
独隅20 天前
针对Ansible执行脚本时报错“可执行文件格式错误”,以下是详细的解决步骤和示例
运维·开发语言·ansible·lua·lua5.4
大小科圣21 天前
Ansible playbook
ansible
大小科圣21 天前
ansible条件判断及循环
ansible
狂奔solar22 天前
ansible-playbook 写arm版达梦7数据库的一键安装脚本
ansible