2020-01-19剧本完结

剧本编写特殊方法
(1)剧本编写变量设置方法
需求:进行万盏数据迁移 站点目录
web01 /html/www web01_new
/html/www web01_new
/html/www web01_new
编写剧本实现迁移
-hosts:web
tashs:
-name: 迁移数据信息
copy: src=www dest=/var/html/ ower=xxx mode=xxx
copy: src=shouji dest=/var/html
copy: src=diannao dest=/var/html

剧本变量设置方法:
在剧本中设置变量
例如:{{ dir_info }}
- hosts: web
vars:
dir_info: /var/html
tasks:
- name: create dir
file: path={{ dir_info }} state=directory
- name: create data
copy: src=/data/www/ dest={{ dir_info }} ower=oldboy
copy: src=/data/shouji/ dest={{ dir_info }} ower=oldboy

在同步传输目录信息时,目录后面不要添加/
剧本文件相对路径是相对于剧本位置而言
执行命令中设置变量
-e EXTRA_VARS, --EXTRA-vars EXTARA_VARS:用于指定剧本中变量信息
ansible-playbook -e dir_info=/var/html test_变量功能剧本.yum
在主机清单中设置变量
[web]
172.16.1.41
172.16.1.31 ansible_user=root ansible_password=654321 ansible_port=22
172.16.1.7
[web:vars]
dir_info=/var/html

三个变量功能同时设置:哪个变量设置更优先
②剧本中设置变量:
①命令中设置变量:
③清单中设置变量:
(2)掌握剧本输出信息方法
批量启动服务程序 并进行验证

  • hosts: web
    tasks:
    • name: boot server
      service: name=rsyncd state=started
    • name: check rsync status
      shell: netstat -lntup|grep 873
    • name: output check info
      debug: msg={{ port_info.stdout_lines }}

(3)掌握剧本编写判断功能
需求:管理三台主机 安装软件程序 httpd
A windows 主机
B centos 主机
C debian 主机
setup 模块收集主机信息模块
常见需要关注收集信息
ansible_all_ipv4_addresses: 仅显示ipv4的信息。
ansible_devices: 仅显示磁盘设备信息。
ansible_distribution: 显示是什么系统,例:centos,suse等。
ansible_distribution_major_version: 显示是系统主版本。
ansible_distribution_version: 仅显示系统版本。
ansible_machine: 显示系统类型,例:32位,还是64位。
ansible_eth0: 仅显示eth0的信息。
ansible_hostname: 仅显示主机名。
ansible_kernel: 仅显示内核版本。
ansible_lvm: 显示lvm相关信息。
ansible_memtotal_mb: 显示系统总内存。
ansible_memfree_mb: 显示可用系统内存。
ansible_memory_mb: 详细显示内存情况。
ansible_swaptotal_mb: 显示总的swap内存。
ansible_swapfree_mb: 显示swap内存的可用内存。
ansible_mounts: 显示系统磁盘挂载情况。
ansible_processor: 显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus: 显示cpu个数(只显示总的个数)。

  • hosts: web
    tasks:
    • hosts: centos
      tasks

(4)掌握剧本编写循环功能
循环方式一: 简单循环方法
需求: 在主机上部署安装多个软件 nfs-utils rpcbind

  • hosts: web
    tasks:
    - name: install software
    service: name={{ item }} state=started
    loop:
    - rpcbind
    - nfs-utils

    循环方式二: 多个变量信息进行循环
    需求: 在多个主机上创建目录信息
    A B C /test_A_dir mode=600
    A B C /test_B_dir mode=601
    A B C /test_C_dir mode=602

     - hosts: web
       tasks:
         - name: install software
           service: name={{ item }} state=started
           loop:
             - rpcbind
             - nfs-utils
         - name: mkdir dir
           file: path={{ item.dir }} mode={{ item.mode }} state=directory
           loop:
             - {dir: '/test_A_dir', mode: '600'} 
             - {dir: '/test_B_dir', mode: '601'}
             - {dir: '/test_C_dir', mode: '602'}
    

需求每台主机上创建三个用户
oldboy666 uid 666 不能创建家目录
oldbou667 uid 667 可以创建家目录 不能登录系统
oldboy668 uid 668 可以创建家目录 可以登录系统
-host: web
tasks:
- name: create user
user: name={{ item.info }} uid={{ item.id }} create_home{{ item.info }} shell={{ item.login}}
lopp:
- { info: 'oldboy666',id: '666',home: 'no',login: '/bin/bash'}
- { info: 'oldboy667',id: '667',home: 'no',login: '/sbin/nologin'}
- { info: 'oldboy668',id: '668',home: 'yes',login: '/bin/bash'}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容