ansible剧本与变量

1.ansible剧本

  • playbook文件,可以长久保存并实现管理维护的文件,一般以yaml或者yml结尾,是运维必须会的内容

2.ansible剧本的基本格式,

1.以安装nginx为例子(在:,-符号后都必须跟一个空格,注意缩进语法)

#编辑安装ngixn的yaml文件
[root@master-61 /server]# vim install_nginx.yaml
- hosts: server
  tasks:
    - name: 01 安装ngixn
      yum:
        name: nginx
        state: present
#执行剧本,查看结果
[root@master-61 /server]# ansible-playbook install_nginx.yaml 

PLAY [server] ********************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************
ok: [192.168.186.129]

TASK [01 安装ngixn] ****************************************************************************************************************
changed: [192.168.186.129]

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

2.在server机器上创建/server目录,并将send_test.yaml文件发送过去

#编写send_test的剧本文件
[root@master-61 /server]# vim send_test.yaml
- hosts: server
  tasks: 
    - name: 01 创建文件
      file: 
        path: /server
        state: directory
    - name: 02 发送文件
      copy: 
        src: /server/send_test.yaml
        dest: /server/

#测试执行剧本查看结果
[root@master-61 /server]# ansible-playbook send_test.yaml 

PLAY [server] ********************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************
ok: [192.168.186.129]

TASK [01 创建文件] *******************************************************************************************************************
changed: [192.168.186.129]

TASK [02 发送文件] *******************************************************************************************************************
changed: [192.168.186.129]

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

3.编写nfs服务的剧本,帮助服务端和客户端配置nfs服务

服务端流程:

1. 部署nfs-utils

2. 修改配置文件 /etc/exports /backup-nfs 172.16.1.0/24(rw,all_squash)可以在本地编辑好配置文件,通过copy模块发送过去

3. 创建共享目录,改所有者

4. 启动服务rpcbind,nfs

1.在本地编辑好nfs的配置文件
[root@master-61 /server]# vim /etc/exports
[root@master-61 /server]# cat /etc/exports
/nfs-data  172.16.1.0/24(rw,sync,all_squash)

2.编写yaml剧本,安装部署,查看结果
[root@master-61 /server]# vim install_nfs.yaml
[root@master-61 /server]# cat install_nfs.yaml 
- hosts: nfs
  tasks:
    - name: 01 通过yum安装nfs-utils和rpcbind
      yum:
        name: nfs-utils,rpcbind
        state: present
    - name: 02 发送本地配置文件
      copy: 
        src: /etc/exports
        dest: /etc/exports
    - name: 03 创建目录,更改目录所有者
      file: 
        path: /nfs-data
        state: directory
        owner: nfsnobody
        group: nfsnobody
    - name: 04 启动rpcbind服务
      systemd: 
        name: rpcbind
        enabled: yes
        state: started
    - name: 05 启动nfs服务
      systemd: 
        name: nfs
        enabled: yes
        state: started


- hosts: web
  tasks: 
    - name: 01 客户端安装nfs-utils
      yum: 
        name: nfs-utils
        state: present
    - name: 02 创建挂载目录
      file: 
        path: /nfs-share
        state: directory
    - name: 03 挂载目录
      mount: 
        src: 172.16.1.31:/nfs-data
        path: /nfs-share
        fstype: nfs
        state: mounted
  
[root@master-61 /server]# ansible-playbook  install_nfs.yaml 

PLAY [nfs] ***************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************
ok: [172.16.1.31]

TASK [01 通过yum安装nfs-utils和rpcbind] ***************************************************************************************************
ok: [172.16.1.31]

TASK [02 发送本地配置文件] *******************************************************************************************************************
ok: [172.16.1.31]

TASK [03 创建目录,更改目录所有者] ***************************************************************************************************************
ok: [172.16.1.31]

TASK [04 启动rpcbind服务] ****************************************************************************************************************
ok: [172.16.1.31]

TASK [05 启动nfs服务] ********************************************************************************************************************
ok: [172.16.1.31]

PLAY [web] ***************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************
ok: [172.16.1.7]
ok: [172.16.1.8]
ok: [172.16.1.9]

TASK [01 客户端安装nfs-utils] *************************************************************************************************************
ok: [172.16.1.7]
ok: [172.16.1.9]
ok: [172.16.1.8]

TASK [02 创建挂载目录] *********************************************************************************************************************
ok: [172.16.1.7]
ok: [172.16.1.8]
ok: [172.16.1.9]

TASK [03 挂载目录] ***********************************************************************************************************************
changed: [172.16.1.9]
changed: [172.16.1.8]
changed: [172.16.1.7]

PLAY RECAP ***************************************************************************************************************************
172.16.1.31                : ok=6    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.1.7                 : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.1.8                 : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.1.9                 : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

4.ansible变量

1.全局变量vars

[root@master-61 /server]# vim show_vars.yaml
[root@master-61 /server]# cat show_vars.yaml 
- hosts: server
  vars:
    dir: /etc/test_vars.txt
  tasks:
    - name: 01 创建/etc/test_vars.txt
      file: 
        path: "{{ dir }}"
        state: directory
[root@master-61 /server]# ansible-playbook show_vars.yaml 

PLAY [server] ************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************
ok: [192.168.186.129]

TASK [01 创建/etc/test_vars.txt] *******************************************************************************************************
changed: [192.168.186.129]

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

[root@master-61 /server]# 

2.register变量

[root@master-61 /server]# ansible-playbook register_show.yaml 

PLAY [server] ************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************
ok: [192.168.186.129]

TASK [接收主机名] *************************************************************************************************************************
changed: [192.168.186.129]

TASK [打印主机名] *************************************************************************************************************************
ok: [192.168.186.129] => {
    "msg": "server主机名是:localhost"
}

PLAY RECAP ***************************************************************************************************************************
192.168.186.129            : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

3.创建变量文件

[root@master-61 /server]# cat /vars.yaml 
ip: 192.168.1.19
hostname: web7
[root@master-61 /server]# cat vars_file.yaml 
- hosts: server
  vars_files: /vars.yaml
  tasks: 
    - name: 创建文件
      file: 
        path: /{{hostname}}/{{ip}}
        state: directory
[root@master-61 /server]# ansible-playbook vars_file.yaml 

PLAY [server] ************************************************************************************************************************

TASK [Gathering Facts] ***************************************************************************************************************
ok: [192.168.186.129]

TASK [创建文件] **************************************************************************************************************************
ok: [192.168.186.129]

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

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Linux中,Ansible支持多种变量。其中一些常用的变量包括: 1. ansible_version:用于获取Ansible的版本号。可以使用命令`ansible testB -m debug -a "msg={{ansible_version}}"`来获取。 2. inventory_dir:用于获取Ansible主机清单文件的存放路径。默认情况下,清单文件位于/etc/ansible/hosts。可以使用命令`ansible test1 -m debug -a "msg={{inventory_dir}}"`来获取。 3. Facts变量:Facts变量是由Ansible中的Facts模块自动收集的关于被管理服务器的信息。它包括操作系统版本、IP地址、主机名、磁盘使用情况、CPU个数、内存大小等私有信息。在每次PlayBook运行之前,都会有一个Gathering Facts的过程来收集这些信息。 除了上述变量,还有其他一些变量可用于Ansible,如全局变量剧本变量和资产变量。这些变量可以根据需要在Ansible的配置文件中进行定义和使用。 #### 引用[.reference_title] - *1* *2* [Ansible(十五)-- ansible 中的变量(四) 内置变量 ansible_version hostvars inventory_hostname 等](https://blog.csdn.net/qq_35887546/article/details/105177305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Ansible 变量](https://blog.csdn.net/TriAngel_/article/details/121157505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值