playbook简单学习

 补充介绍 echo 以及双引号跟单引号的区别

  echo `date +%F`
  echo $(date +%F)
  a=10
  echo '$a'
  $a
  echo "$a"
  10

  

  playbook需要严格的遵循yaml规范

    yaml基本规范

    - 冒号后面必须有空格
    - 横线后面必须要空格
    - 严格保持对齐
    - 等号前面不能有空格?

 

   字典 key:value

  列表 [] -(列表有两种表示方式,一般使用第一种-方式表示)

  - alex
  - wusir
  - yantao
  - yuchao
  [alex,wusir,yantao,yuchao]

playbook格式

  ansible-playbook -h(查看帮助信息)

  

  比较重要的一些参数:

    Usage: ansible-playbook [options] playbook.yml [playbook2 ...]
      -C, --check #白跑,执行但是不会有结果
    --list-hosts #列出符合的主机
    -f FORKS, --forks=FORKS #做并发
    --syntax-check #检查语法
    -k, --ask-pass #输入密码

  

  文件内容写入格式:

    单个playbook

    - hosts: web
      remote_user: root
      tasks:
      - name: createuser
        user: name=alex20 home=/opt/alex20 uid=4000

    

    多个playbook

      - hosts: web
         remote_user: root
         tasks:
         - name: createuser
         user: name=alex20 home=/opt/alex20 uid=4000
       - name: copyfile
        copy: src=/etc/fstab dest=/tmp/fs

    

  幂等性 不管执行多少次,得到的结果都是一样的

  

    - hosts: web
      remote_user: root
      tasks:
      - name: createuser
      user: name=alex20 home=/opt/alex20 uid=4000
      - name: copyfile
     copy: src=/etc/fstab dest=/tmp/fs
    - hosts: db
    tasks:
               - name: copyfile
                  copy: src=/etc/fstab dest=/tmp/fs

  五种传参方式

      第一种:

      

       第二种:

      

      第三种:

      

      第四种:

      

       第五种:

      

    优先级              -e > playbook > hosts

     setup

      参数名字

      ansible_all_ipv4_addresses #所有的ipv4地址
      ansible_all_ipv6_addresses #所有的ipv6地址
      ansible_architecture #系统的架构
      ansible_date_time #系统时间
      ansible_default_ipv4 #默认的ipv4地址
      address ip地址
      alias 网卡名称
      broadcast 广播地址
      gateway 网关
      netmask 子网掩码
      network 网段
      ansible_default_ipv6 #默认的ipv6地址
      ansible_device_links #系统的磁盘信息
      ansible_distribution #系统名称
      ansible_distribution_file_variety #系统的基于公司
      ansible_distribution_major_version #系统的主版本
      ansible_distribution_version #系统的全部版本
      ansible_dns #系统的dns 默认udp 端口53
      ansible_domain #系统的域 ldap
      ipv4 #ipv4地址
      ansible_env #系统的环境
      ansible_fqdn #系统的完整主机名
      ansible_hostname #系统的简写主机名
      ansible_kernel #系统的内核版本
      ansible_machine #系统的架构
      ansible_memtotal_mb #系统的内存
      ansible_memory_mb #系统的内存使用情况
      ansible_mounts #系统的挂载信息
      ansible_os_family #系统家族
      ansible_pkg_mgr #系统的包管理工具
      ansible_processor #系统的cpu
      ansible_processor_cores #每颗cpu的核数
      ansible_processor_count #cpu的颗数
      ansible_processor_vcpus #cpu的个数=cpu的颗数*每颗cpu的核数
      ansible_python #系统python信息
      ansible_python_version #系统python的版本
      ansible_system #系统名字

  tags    打一个标签,可以指定单独的标签运行

  

  handlers          被触发的任务,notify 触发

  

  template                      可以动态的传递参数,在setup获取

    绝对路径的写法

    

    相对路径的写法

    

    mv redis.conf{,.j2} = mv redis.conf redis.conf.j2 (两边一样的简写方法)

  

    yy 复制一行

    # yy 复制多行(yy前加参数代表复制多行)

    p 粘贴

    dd 删除一行

    # dd 删除多行(dd前加参数代表删除多行)

    d$ 从当前位置删除到结尾

  when     判断

    

    

   with_items   循环

    

    

    嵌套循环

    

原文地址:https://www.cnblogs.com/Godisgirl/p/10826524.html