剧本 playbook, roles

1.yaml

  格式要求
    冒号后面必须有空格

    等号后面不能有空格

    -后面也要有空格

    严格对齐

2.setup

ansible_all_ipv4_addresses   # ipv4的所有地址
ansible_all_ipv6_addresses   # ipv6的所有地址
ansible_date_time   # 获取到控制节点时间
ansible_default_ipv4  # 默认的ipv4地址
ansible_distribution  # 系统
ansible_distribution_major_version  # 系统的大版本
ansible_distribution_version  # 系统的版本号
ansible_domain #系统所在的域
ansible_env #系统的环境变量
ansible_hostname #系统的主机名
ansible_fqdn #系统的全名
ansible_machine #系统的架构
ansible_memory_mb #系统的内存信息
ansible_os_family # 系统的家族
ansible_pkg_mgr # 系统的包管理工具
ansible_processor_cores #系统的cpu的核数(每颗)
ansible_processor_count #系统cpu的颗数
ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数
ansible_python # 系统上的python
ansible cache -m setup -a 'filter=*processor*' # 用来搜索

  如果出现

- hosts: db
  tasks:
  - name: zzgbgn
    dong: zzdbgn
    when: zhanzhe
  - name: pzhegbgn
    dong: pzhedbgn
    when: pazhe

条件判断

when: 条件==“条件”

  不同的系统

  不同的版本

  不同的环境

  不同的用户

- hosts: db
  remote_user: root
  tasks:
  - name: createfile
    copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt
    when: a=="3"
  - name: cratefile
    copy: content="小弦切切如私语" dest=/tmp/a.txt
    when: a=="4"

  Ubuntu安装包的方式是apt-get

标签  tags

- hosts: db
  tasks:
  - name: wadong
    tieqiao: wadong
  - name: tk
    dong: tk
    tags: tk
- hosts: web
  tasks:
  - name: installnginx
    yum: name=nginx
  - name: copyfile
    copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
    tags: copyfile
  - name: start
    service: name=nginx state=started

标签的传递

ansible-playbook -t copyfile p7.yml

循环  with_item

  一次性创建多个

- hosts: gb
  tasks:
  - name: gbqc
    dong: {{ item }}
    with_items:
    - qbqc
    - cyf
    - ssfj

 

- hosts: web
  tasks:
  - name: crateuser
    user: name={{item}}
    with_items:
    - alex20
    - alex21
    - alex22
~    

 

- hosts: web
  tasks:
  - name: crateuser
    user: name={{item}}
    with_items:
    - alex30
    - alex31
    - alex32
  - name: crategroup
    group: name={{item}}
    with_items:
    - wulaoshi20
    - wulaoshi21
    - wulaoshi22
~   

嵌套循环  放在字典中,通过点来取值

- hosts: web
  tasks:
  - name: crategroup
    group: name={{item}}
    with_items:
    - wulaoshi30
    - wulaoshi31
    - wulaoshi32
  - name: createuser
    user: name={{item.name}} group={{item.group}}
    with_items:
    - {'name':alex40,'group':wulaoshi30}
    - {'name':alex41,'group':wulaoshi31}
    - {'name':alex42,'group':wulaoshi32}

模版   template

- hosts: web
  tasks:
  - name: installredis
    yum: name=redis
  - name: copyfile
    template: src=/etc/redis.conf dest=/etc/redis.conf
  - name: start
    service: name=redis state=started
  配置文件: bind {{ ansible_default_ipv4.address }} 

  copy和template的区别

    copy模块不替代参数

    template 模块替代参数

- hosts: web
  tasks:
  - name: installredis
    yum: name=redis
  - name: copyfile
    template: src=redis.conf dest=/etc/redis.conf
  - name: start
    service: name=redis state=started

注意:写相对路径   在当前目录下新建一个templates目录,然后把文件放在templates目录里面

handlers

  修改配置文件

- hosts: web
  tasks:
  - name: installredis
    yum: name=redis
  - name: copyfile
    template: src=redis.conf dest=/etc/redis.conf
    tags: copyfile
    notify: restart
  - name: start
    service: name=redis state=started
  handlers:
  - name: restart
    service: name=redis state=restarted

 

3.roles

  目录清晰

  可以相互调用

roles文件夹

  文件夹里面是要创建的每一个角色,每一个角色一个文件夹

  每一个角色里面都有tasks(必须的),templates,files,handlers,vars目录

  每个目录都要有main.yml文件,通过import_tasks来调用

  其中templates文件夹中的文件可以通过相对路径来调用

 

setenforce 0 #用来临时关闭selinux
iptables -F # 临时关闭防火墙
/etc/selinux/config  # 永久关闭

 

 

 

 

 

posted @ 2019-02-21 16:36  Montant  阅读(267)  评论(0编辑  收藏  举报