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
相关推荐
墨水\\12 小时前
Ansible部署及基础模块
服务器·网络·ansible
七七powerful12 小时前
ansible play-book玩法
linux·服务器·ansible
Karoku0662 天前
【自动化部署】Ansible循环
linux·运维·数据库·docker·容器·自动化·ansible
W u 小杰2 天前
Ansible基本用法
服务器·网络·ansible
运维小文2 天前
ansible剧本快速上手
linux·运维·python·自动化·ansible·幂等性·剧本
记得多喝水o2 天前
Ansible自动化运维 技术与最佳实践
运维·自动化·ansible
Karoku0662 天前
【自动化部署】Ansible Playbook 基础应用
运维·网络·docker·容器·自动化·ansible·consul
运维小文3 天前
ansible的流程控制
python·自动化·ansible·脚本
高hongyuan5 天前
Ansible 简介及常用命令 安装部署tomcat -单机版
运维·自动化·ansible
澜堇6 天前
深入理解 Ansible Playbook:组件与实战
linux·运维·ansible