ansible

1.ansible批量管理服务部署
1.管理端服务器
a.安装软件
yum install -y ansible(要epel源)
01. /etc/ansible/ansible.cfg --- ansible服务配置文件
02. /etc/ansible/hosts --- 主机清单文件
03. /etc/ansible/roles --- 角色目录
b.编写主机清单文件
vim /etc/ansible/hosts
c.测试是否可以管理多个主机
ansible all -a "hostname"
d.ansible服务架构信息
1.主机清单配置
2.软件模块信息
3.基于秘钥连接主机
4.主机需要关闭selinux
5.软件剧本功能
2.ansible软件模块应用
ansible的官方文档doc.ansible.com
ansible学习模块命令:
a.列出全部模块 : ansible-doc -l
b.指定一个模块详细说明: ansible-doc -s fetch
c.查询模块在剧本中的方法: ansible-doc fetch
ansible模块的语法:
ansible 主机名称/主机组名称/主机地址信息/all -m(指定模块) 模块名称 -a(指定动作) "执行的动作"
3.第一个模块: command(默认的模块可不写)
1.定义:command - Executes a command on a remote node 在一个远程主机上执行命令
2.基本用法: ansible all -m command -a "cat /etc/hosts"
3.扩展用法:
a. chdir: Change into this directory before running the command. ---切换目录,默认是在/root下
命令: ansbible all -m command -a "chdir=/test touch lin.txt" 切换到/test目录下,创建文件lin.txt
b. creates: If it already exists, this step won't be run. --- 如果creates=/dir/file 存在,则不执行后面动作
命令: ansible all -m command -a "chdir=/test creates=/test/lin.txt touch wen.txt" 因lin.txt存在,不能touch,如果不存在则可以touch
c. removes: If it already exists, this step will be run. 与creates相反
d. free_form(required) The command module takes a free form command to run.
There is no actual parameter named 'free form'. ;即 用command模块时,-a参数后要跟上合法的linux命令
f.PS: variables like HOME and operations like "<", ">", "|", ";" and "&" will not work. Use the shell module if you need these features. 4.第二个模块: shell(万能模块) 1.定义:command - Executes command in node 在节点上执行操作 2.基本用法: ansible all -m shell -a "cat /etc/hosts" 3.扩展用法: a. chdir: Change into this directory before running the command. ---切换目录,默认是在/root下 命令: ansbible all -m shell -a "chdir=/test touch lin.txt" 切换到/test目录下,创建文件lin.txt b. creates: If it already exists, this step won't be run. --- 如果creates=/dir/file 存在,则不执行后面动作 命令: ansible all -m shell -a "chdir=/test creates=/test/lin.txt touch wen.txt" 因lin.txt存在,不能touch,如果不存在则可以touch c. removes: If it already exists, this step will be run. 与creates相反 d. free_form(required) The command module takes a free form command to run. There is no actual parameter named 'free form'. ;即 用command模块时,-a参数后要跟上合法的linux命令 4.利用shell执行脚本: 1.缩写一个脚本 2.将脚本发送到远程主机 3.将脚本权限进行修改(添加执行权限) 4.运行ansible命令执行脚本 5.第三个模块: script(脚本模块) 1.编写一个脚本(比shell模块好,不用发到远程主机上,在ansible主机上就可以) 2.运行ansible命令执行脚本 3.script模块参数功能也和command模块类似 6.文件类型模块(copy): 1.copy - copies files to remove locations --- 将数据信息进行批量分发 2.基本用法 : ansible 192.168.3.18 -m copy -a "src=/server/scripts/status.sh dest=/server/scrippts/" 192.168.3.18 | CHANGED => { ----对哪台主机进行操作 "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": true, ----是否对主机信息进行改变 "checksum": "6d07bf461fa199c86a33766446ebcce149e92d0a", -生成文件校对码 md5sum "dest": "/server/scripts/status.sh", ----显示目录路径信息 "gid": 0, ----显示复制后文件gid信息 "group": "root", ----文件属组信息 "md5sum": "1e70438b1ed56eb3e26e50ccf5df3afb", "mode": "0644", ----显示复制后文件权限 "owner": "root", ----显示复制后文件属主 "secontext": "system_u:object_r:default_t:s0", "size": 131, ----显示文件大小 "src": "/root/.ansible/tmp/ansible-tmp-1580990976.09-32883763294237/source", "state": "file", ----显示文件类型 "uid": 0 ----显示复制后文件UID信息 } 3.ansible软件输出颜色说明: a.绿色信息: 查看主机信息/对主机未做改动 b.黄色信息: 对主机数据信息做了修改 c.红色信息: 命令执行出错了 d.粉色信息: 忠告信息 f.蓝色信息: 显示ansible命令执行的过程 4.扩展用法: 1.owner group 传输文件时修改文件的属主和属组信息 Name of the user that should own the file/directory, as would be fed to chown. 命令: ansible all -m copy -a "src=/server/scripts/status.sh dest=/server/scripts/ owner=lin group=lin" 2.mode : 在传输文件时修改文件的权限信息 命令: ansible all -m copy -a "src=/server/scripts/status.sh dest=/server/scripts/ mode=777" 3.backup : 在传输数据文件信息时对远程主机源文件进行备份 命令: ansible all -m copy -a "src=/server/scripts/status.sh dest=/server/scripts/ backup=yes" 192.168.3.18 | CHANGED => { "backup_file": "/server/scripts/status.sh.16254.2020-02-06@20:30:17~", 4.content: 创建一个文件并直接编辑文件的信息 命令: ansible 192.168.3.18 -m copy -a "content='lin.123' dest=/server/scripts/lin.txt" 5.remote_src 将远程的文件移到远程的目录下,不找ansible下面的 命令: ansible 192.168.3.18 -m copy -a "content='lin.123' dest=/server/scripts/lin.txt" PS: 多主机时,18的移动到18下,20的移动到20下 默认remote_src=no 7.文件模块(file) 1.概念: file - sets atributes of files 设置文件属性信息 2.基本用法 : ansible all -m file -a "dest=/server/scripts/status.sh owner=lin group=lin mode=777" 3.扩展用法: 01.可以利用模块创建数据信息(文件 目录 链接文件) state 参数: --absent ---缺席/删除数据信息 --directory ---创建一个目录信息 --file ---检查创建的数据信息是否存在,绿存在 ,红不存在 --hard ---创建一个硬链接文件 --link ---创建一个软链接文件 --touch ---创建一个文件信息 02.创建目录信息: 一级目录:ansible 192.168.3.18 -m file -a "dest=/test01/ state=directory" 多级目录: ansible 192.168.3.18 -m file -a "dest=/test01/02/03 state=directory" 03.创建文件信息: ansible 192.168.3.18 -m file -a "dest=/test01/lin.txt state=touch" 04.创建链接信息: 硬链接: ansible 192.168.3.18 -m file -a "src=/test01/lin.txt dest=/test01/lin_hard.txt state=hard" 软链接: ansible 192.168.3.18 -m file -a "src=/test01/lin.txt dest=/test01/lin_link.txt state=link" 05.删除文件数据信息: ansible 192.168.3.18 -m file -a "dest=/test01/lin_hard.txt state=absent" 06.删除目录: ansible 192.168.3.18 -m file -a "dest=/test01t state=absent" 07.递归 : recurse 只有当state是directory时,才能设置recurse=yes,可改目录下的所有文件 8.YUM模块: 1.概念: Manages packages with the yum package manager 2.基本用法: ansible 192.168.3.20 -m yum -a "name=iotop state=installed" 3.参数命令: name ----安装软件名称 state ----指定是否安装软件 installed ,present, latest ---安装软件 absent,removed ---卸载软件 9.service模块: 1.概念: 管理服务器的运行状态 停止 开启 重启 2.基本用法: ansible 192.168.3.18 -m service -a "name=nfs state=started enabled=yes" 3.参数命令: name ----指定管理的服务名称 state ----指定服务状态: started stopped restarted enabled----指定服务是否开机自启动 10.cron模块: 1.概念: 批量设置多个主机的定时任务信息 2.基本用法: ansible 192.168.3.18 -m cron -a "minute=0 hour=20 job='/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1'" 3.参数命令:minute ----设置分钟信息 ( 0-59, *, */2, etc ) hour ----设置小时信息 ( 0-23, *, */2, etc ) day ----设置日期信息 ( 1-31, *, */2, etc ) month ----设置月份信息 ( 1-12, *, */2, etc ) weekday ----设置周信息 ( 0-6 for Sunday-Saturday, *, etc ) job ----定义定时任务需要的动作 4.扩展用法: a.给定时任务设置注释信息: ansible 192.168.3.18 -m cron -a "name='time sync' minute=0 hour=21 job='/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1'" b.删除ansible指定定时任务 ansible 192.168.3.18 -m cron -a "name='time sync' state=absent" PS: 只能删除ansible指定的定时任务 c.批量注释定时任务 ansible 192.168.3.18 -m cron -a "name='time sync' job='/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' disabled=yes" PS:disabled=yes注释任务, disabled=no时恢复定时任务 11.mount模块 1.概念:批量进行挂载操作 2.基本用法 : ansible all -m mount -a "src=192.168.3.12:/data path=/mnt fstype=nfs state=mounted" 3.参数命令: src ----需要挂载的存储设备或文件信息 path ----指定目标挂载点目录(老版有name,dest有可能会修改) fstype ----挂载时的文件系统 state ----进行挂载:present/mounted 进行卸载:absent/unmounted PS: present:不会立即挂载,修改fstab文件,实现开机自动挂载 *****mounted: 会立即挂载,修改fstab文件,实现开机自动挂载 *****unmounted: 会立即卸载,不会删除fstab文件信息 absent: 会立即卸载,并且会删除fstab文件信息 ,禁止开机自动挂载 12.USER模块 1.概念: 批量创建用户 2.基本用法: ansible all -m user -a "name=lin01" 3.扩展用法: UID ----指定UID group ---指定主组 groups---指定附属组 a.指定用户UID :ansible all -m user -a "name=lin02 uid=1008" b.指定用户组信息: 1.主组信息:ansible all -m user -a "name=lin03 group=lin02" 2.主组附属组都有: ansible all -m user -a "name=lin05 groups=lin02" c.创建虚拟用户:ansible all -m user -a "name=lin06 create_home=no shell=/sbin/nologin" d.给指定用户创建密码 PS:要设置密码,需要将密码明文转成密文 生成密文方法(ansible文档上有): 1. mypassword=输入的密码 mysecretsalt=加密校验信息 加强密码使用 ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysecretsalt') }}" [root@nginx tmp]# ansible all -i localhost, -m debug -a "msg={{ 'lin123' | password_hash('sha512', 'wen') }}" localhost | SUCCESS => { "msg": "6wenShwRLP5IXGnTa3xcQ/4N2sj4pym3fccJBykjmlayizu97knMWnsXYmywEgNESideMnIHjhvRhYW0534PFjVvB0"
}
2.mkpasswd --method=sha512 --失败
3. python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
Password:
6m3BJ5CMGFWpLkcs.iJpLuJvRBB.J3CzNbSXNJyFZZyvzzvcfWoetegViTWyTU546g0M5KzN.X38Tc//Hoq2d1KRTVMTS3HyQH6w10/ 4.基本命令: ansible all -m user -a "name=lin08 password="'6m3BJ5CMGFWpLkcs.iJpLuJvRBB.J3CzNbSXNJyFZZyvzzvcfWoetegViTWyTU546g0M5KzN.X38Tc//Hoq2d1KRTVMTS3HyQH6w10/'"
PS:密文一定要加上''号,因为有特殊符号在里面$
2.playbook剧本编写
01.剧本编写规范 yaml格式
a.缩进空格规范: 要用相同的空格数进行缩进
b.冒号规范: :后面要跟空格 (:结尾或在注释说明中不要加空格)
c.短横线应用- : 表示列表功能
02.剧本的执行:
a.检查剧本的语法格式:
ansible-playbook --syntax-check rsync.yaml格式
b.模拟执行剧本:
ansible-playbook -C rsync.ymal
c.执行剧本:
ansible-playbook rsync.ymal
03.rsync服务剧本编写: vim /etc/ansible/ansible_playbook/rsync.yaml格式
a.先按安装部署rsync流程来编写playbook:
- hosts: 192.168.3.18
tasks:
- name: 01-install rsyncd
yum: name=rsync state=installed
- name: 02-copy configer file
copy: src=/etc/rsyncd.conf dest=/etc/
- name: 03-create rsync user
user: name=rsync create_home=no shell=/sbin/nologin
- name: 04-create backup dir
file: dest=/backup state=directory owner=rsync group=rsync
- name: 05-create password file
copy: content=rsync_backup:lin19831214 dest=/etc/rsync.password mode=600
- name: 06-start rsync server
service: name=rsyncd state=started enabled=yes

  • hosts: 192.168.3.20
    tasks:
    • name: 01-install rsync
      yum: name=rsync state=installed
    • name: 02-create password file
      copy: content=lin19831214 dest=/etc/rsync.password mode=600
    • name: 03-create test file
      file: dest=/tmp/test.txt state=touch
    • name: 04-check test
      shell: rsync -avz /tmp/test.txt rsync_backup@192.168.3.18::ftp --password-file=/etc/rsync.password
      b.剧本编写常见错误:
      01.剧本语法规范是否符合(空格 冒号 短横线)
      02.剧本模块使用是否正常
      03.剧本中一个name标识下面只能写一个模块任务信息
      04.剧本中尽量不要大量使用shell模块,有时会报错,类似用shell代替user时,当user有时,用shell会报错
      3.主机清单配置:
      1.分组配置主机信息
      [nginx]
      192.168.3.17
      192.168.3.18
      192.168.3.19
      [data]
      192.168.3.20
      192.168.3.21
      2.主机名符号匹配配置
      a. [nginx]
      192.168.3.[17:19]
      b. [nginx]
      nginx[01:03]
      3.非标准远程端口配置(不是22端口时)
      [nginx]
      192.168.3.17:port号(比如522)
      4.使用特殊的变量 ssh_port -- 商品 ssh_user --用户 ssh_pass --密码 ssh_host 主机名 不用/etc/hosts对照
      [nginx]
      192.168.3.18 ansible_ssh_port=522 ansible_ssh_user=root ansible_ssh_pass=lin123
      [nginx]
      nginx01 ansible_ssh_host=192.168.3.18 ansible_ssh_port=522 ansible_ssh_user=root ansible_ssh_pass=lin123
      5.主机组名嵌入配置
      a.[rsync:children] --- 嵌入子组信息
      rsync_server
      rsync_client
      [rsync_server]
      192.168.3.18
      [rsync_client]
      192.168.3.20
      b.[rsync:vars]
      ansible_ssh_host=192.168.3.18
      ansible_ssh_port=522
      ansible_ssh_user=root
      ansible_ssh_pass=lin123
      [rsync]
      rsync01
      6.ansible变量用法:
      1.直接在剧本文件编写 (引用变量时要用{{ 变量 }} PS:配置文件中要修改,不然不能成功
  • hosts: 192.168.3.18
    vars:
    backupdir: /backup
    passfile: /rsync.password
    tasks:
    • name: 01-install rsyncd
      yum: name=rsync state=installed
    • name: 02-copy configer file
      copy: src=/etc/rsyncd.conf dest=/etc/
    • name: 03-create rsync user
      user: name=rsync create_home=no shell=/sbin/nologin
    • name: 04-create backup dir
      file: dest={{ backupdir }} state=directory owner=rsync group=rsync
    • name: 05-create password file
      copy: content=rsync_backup:lin19831214 dest=/etc/{{ passfile }} state=touch mode=600
    • name: 06-start rsync server
      service: name=rsyncd state=started enabled=yes
  • hosts: 192.168.3.20
    vars:
    passfile: rsync.password
    tasks:
    • name: 01-install rsync
      yum: name=rsync state=installed
    • name: 02-create password file
      copy: content=lin19831214 dest=/etc/{{ passfile }} mode=600
    • name: 03-create test file
      file: dest=/tmp/test.txt state=touch
    • name: 04-check test
      shell: rsync -avz /tmp/test.txt rsync_backup@192.168.3.18::ftp --password-file=/etc/{{ passfile }}
      2.在命令行中进行指定
      ansible-playbook -e(--extra-vars) backupdir=/backup -e passfile=rsync.password rsync_var.yaml
      3.在主机清单文件中编写
      [rsync_server:vars]
      backupdir=/backup
      passfile=rsync.password
      [rsync_client]
      192.168.3.20
      [rsync_client:vars]
      passfile=rsync.password
      4.三个变量设置的优先级: 命令行>剧本变量>主机清单变量
    1. 剧本设置注册信息 ---可显示输出命令结果信息 register --
    • name: 06-start rsync server
      service: name=rsyncd state=started enabled=yes
    • name: 07-check server port
      shell: netstat -tlnup|grep 874 ---端口信息
      register: get_server_port ---注册端口信息
    • name: display port info
      debug: msg={{ get_server_port.stdout_lines }} <--注册的变量在里面
    1. 在剧本中设置判断信息 ----用when: 来设置
      1.基本用法: - name: 03-create test file
      file: dest=/tmp/nfs.txt state=touch
      when: (ansible_hostname == "nfs")
      - name: 03-create test file
      file: dest=/tmp/mysql.txt state=touch
      when: (ansible_hostname == "mysql")
      - name: 04-check test
      shell: rsync -avz /tmp/nfs.txt rsync_backup@192.168.3.18::nfs --password-file=/etc/rsync.password
      when: (ansible_hostname == "nfs")
      - name: 04-check test
      shell: rsync -avz /tmp/mysql.txt rsync_backup@192.168.3.18::mysql --password-file=/etc/rsync.password
      when: (ansible_hostname == "mysql")
      2.setup模块可以查看被管理主机系统的详细信息 ansible 主机 -m setup
      3.获取内置变量方法: ansible 主机 -m setup -a "filter=ansible_hostname"
      4.常见主机信息:
      "ansible_all_ipv4_addresses": ---仅显示ipv4信息
      "ansible_devices" ---显示磁盘设备信息
      "ansible_distribution": "CentOS" ---显示系统信息
      "ansible_distribution_major_version": "7", ---显示系统主版本
      "ansible_distribution_version": "7.6", ---显示系统版本
      "ansible_machine": "x86_64", ---显示系统类型 32位或64位
      "ansible_ens33": ---显示ens33信息
      "ansible_hostname": ---显示主机名
      "ansible_kernel": "3.10.0-957.el7.x86_64", ---显示内核版本
      "ansible_lvm": ---LVM相关信息
      "ansible_memtotal_mb": 972 ---系统总内存
      "ansible_memfree_mb": 69, ---可用系统内存
      "ansible_memory_mb": ---详细显示内存情况
      "ansible_swapfree_mb": 2047, ---总的swap内存
      "ansible_swaptotal_mb": 2047 ---swap内存的可用内存
      "ansible_mounts" ---磁盘挂载情况
      "ansible_processor" ---显示cpu个数 (具体显示每个cpu的型号)
      "ansible_processor_vcpus": 1, ---显示cpu个数 (只显示总个数)

      5.获取子信息方法: (在剧本中可用,命令行有时没效果)
      ansible 192.168.3.18 -m setup -a "filter=ansible_ens33[ipv4]"
      9.在剧本中设置循环信息:
      1.循环主要是为了合并剧本的重复模块,比如把两个copy的模块合并
      2.两个模块的命令要特别的相似才行
      3.用法:#copy: src=/etc/ansible/server_file/rsync_server/rsyncd.conf dest=/etc/ mode=644
      #copy: src=/etc/ansible/server_file/rsync_server/rsync.password dest=/etc/ mode=600
      copy: src=/etc/ansible/server_file/rsync_server/{{ item.src }} dest={{ item.dest }} mode={{ item.mode }}
      with_items:
      - { src: 'rsyncd.conf', dest: '/etc/', mode: '644' }
      - { src: 'rsync.password', dest: '/etc/', mode: '600' }
      4.用法2:yum 安装多软件时:
      - name: installed pkg
      yum:
      name=['rsync', 'tree', 'wget', 'lrzsz']
      state=installed
      10.剧本执行出现错误排查
      a.找到书本出现问题关键点
      b.将剧本中的操作转换成模块进行操作
      c.将模块的功能操作转换成linux命令:
      01.本地管理主机上执行命令测试
      02.远程被管理主机上执行命令测试
      d.剧本执行卡死 ---ansible-playbook XX.ymal -vvvv(最多四个V)
      11.剧本中设置忽略错误信息
      1.通过在playbook剧本在,在报错的那行下面写上

      • name: 02-copy configer file
        copy: rc=/etc/rsyncd.conf dest=/etc/
        ignore_errors: yes
        2.可以通过设置ignore_errors: yes通过忽略报错那行,可以执行下,是否下面有报错有影响
        12.剧本中设置标签功能:
        1.原因:主要是为了跳过正常的步骤,不会再执行,浪费时间,直接给报错那行打上tags
        2.配置:- name: 02-copy configer file
        copy: rc=/etc/rsyncd.conf dest=/etc/
        tags: copy configer --在要执行的行下面打tags不能用纯数字
        3.命令:ansible-playbook --tags='copy configer' rsync_test.yaml
        13.剧本中设置触发功能:
        1.原因:当nofity配置或文件改变时,通过handlers:来改变一些模块
        2.配置: - name: 02-copy configer file & password file
        copy: src=/etc/ansible/server_file/rsync_server/{{ item.src }} dest={{ item.dest }} mode={{ item.mode }}
        with_items:
        - { src: 'rsyncd.conf', dest: '/etc/', mode: '644' }
        - { src: 'rsync.password', dest: '/etc/', mode: '600' }
        notify: restart rsync server
        service: name=rsyncd state=started enabled=yes
        handlers: ---与tasks对齐 当rsyncd.conf配置文件修改时,才执行这下面的任务,restart rsyncd
        - name: restart rsync server
        service: name=rsyncd state=restarted
        14.ansible性能调优:
        1.原因:在执行playbook时,系统有个自动的 TASK [Gathering Facts],这个主要是收集系统的信息,架构,主机类的,影响性能有时能关闭掉
        2.方法: gather_facts: no
        15.ansible的playbook剧本整合
        1.原因:把多个剧本整合在一起成为一个剧本进行执行
        2.方法: [root@nginx ansible_playbook]# vim site.yaml
        - import_playbook: rsync.yaml
        - import_playbook: nfs.yaml
        3.命令: ansible-playbook site.yaml
        16.ansible程序roles ---规范
    2. ansible剧本编写完问题:
      01.目录结构不够规范
      02.编写好的任务如何重复调用
      03.服务端配置文件改动,客户端参数信息也自动变化
      04.汇总剧本中没有显示主机角色信息
      05.一个剧本内容信息过多,不容易进行阅读,如何进行拆分
      06.这个就是引出了role的使用,也可以不用
      2.规范目录结构
      01.cd /etc/ansible/roles
      02.mkdir {rsync,nfs} ---创建相应角色目录,可自起名字
      03.mkdir {rsync,nfs}/{vars,tasks,templates,handlers,files} ---创建子目录,要和官方文档上一样
      04.说明: ├── nfs
      │ ├── files ---保存需要分发文件目录
      │ ├── handlers ---保存触发器配置文件
      │ ├── tasks ---保存要执行的动作信息文件
      │ ├── templates ---保存需要分发模板文件(与files不同的是,能支持变量)
      │ └── vars ---保存变量信息文件
      └── rsync
      ├── files ---
      ├── handlers ---
      ├── tasks ---
      ├── templates ---
      └── vars ---
      05.每个子目录下的编辑文件都是main.yaml除了files目录
      [root@nginx nfs]# tree
      .
      ├── files
      │ └── exports
      ├── handlers
      │ └── main.yaml
      ├── tasks
      │ └── main.yaml
      ├── templates
      └── vars
      └── main.yaml
      a.tasks/main.yaml: - name: 01-copy conf file
      copy: src=exports dest=/etc
      notify: restart nfs server
      - name: 02-create data dir
      file: path={{ Data_dir }} state=directory owner=nfsnobody group=nfsnobody
      - name: 03-boot server
      service: name={{ item }} state=started enabled=yes
      with_items:
      - rpcbind
      - nfs
      b.vars/main.yaml: Data_dir: /data
      c.files/exports:
      /data 192.168.3.0/24(rw,sync)
      d.handlers/main.yaml:
      - name: restart nfs server
      service: name=nfs state=restarted
      e.在roles/ vim main.yaml
      - hosts: nfs_server
      roles:
      - nfs_server
      f.可以把各个动作分成一个yaml
      copy_conf.yaml : - name: 01-copy conf file
      copy: src=exports dest=/etc
      notify: restart nfs server
      create_dir.yaml - name: 02-create data dir
      file: path={{ Data_dir }} state=directory owner=nfsnobody group=nfsnobody
      boot-server.yaml - name: 03-boot server
      service: name={{ item }} state=started enabled=yes
      with_items:
      - rpcbind
      - nfs
      合并:vim site.yaml - import_playbook: copy_conf.yaml
      - import_playbook: create_dir.yaml
      - import_playbook: boot-server.yaml
      g.tasks/main.yaml --> rsync_server的

  • name: 01-install rsyncd
    yum: name=rsync state=installed
  • name: 02-copy configer file
    template: src=rsyncd.conf dest=/etc/ --copy变成了template 主要是加了配置文件的变量
    notify: restart rsync server
  • name: 03-create rsync user
    user: name=rsync create_home=no shell=/sbin/nologin
  • name: 04-create backup dir
    file: dest={{ Data_dir }} state=directory owner=rsync group=rsync
  • name: 05-create password file
    copy: content=rsync_backup:lin19831214 dest=/etc/rsync.password mode=600
  • name: 06-start rsync server
    service: name=rsyncd state=started enabled=yes
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351