2016年2月10日水曜日

[CentOS6][Ansible] Playbook の変数とタスクの使用例いろいろ


環境変数でプロキシを指定して yum を使う


vars:
  proxy_env:
    http_proxy: http://192.168.1.1:8080
    https_proxy: http://192.168.1.1:8080

tasks:
  - name: epelレポジトリの追加
    yum: name=epel-release state=latest
    environment: proxy_env


変数の値をJSONで設定する


vars:
  os: {
    hostname: "node01",
    locale: "ja_JP.UTF-8",
    zone: "Asia/Tokyo",
    zoneinfo_path: "/usr/share/zoneinfo/Asia/Tokyo"
  }

tasks:
  - name: ホスト名の設定
    hostname: name="{{os.hostname}}"


ユーザを配列で設定して作成する


vars:
  #  md5-password) openssl passwd -1 password
  os_users:
    - { name: "user01",  password: "$1$ZjFvuZTg$djhcNWh2.GAWtf5TOgzTa2", uid: "2001", group: "users", home: "/home/user01", shell: "/bin/bash" }
    - { name: "user02",  password: "$1$ZjFvuZTg$djhcNWh2.GAWtf5TOgzTa2", uid: "2002", group: "users", home: "/home/user02", shell: "/bin/bash" }

tasks:
  - name: (OS) ユーザの作成
    user: >
      name={{item.name}}
      state=present
      password={{item.password}}
      uid={{item.uid}}
      group={{item.group}}
      home={{item.home}}
      shell={{item.shell}}
    with_items: os_users

ディレクトリを配列で設定して作成する


tasks:
  - name: ディレクトリ作成
    file: path={{item}} state=directory owner=root group=root mode=0755
    with_items:
      - /data1
      - /data2

あるファイルが存在したら処理をする


tasks:
  - stat: path=/etc/yum.repos.d/epel.repo
    register: epel_stat
  - name: yumパッケージのインストール
    yum: name={{item}} enablerepo=epel state=latest
    with_items:
      - pkg1
      - pkg2
    when: epel_stat.stat.exists == true

コマンドを実行する


tasks:
  - name: パーティション拡張の指示
    shell: "dracut --force --add growroot /boot/initramfs-$(uname -r).img"
    register: dracut
    ignore_errors: true
    changed_when: false

  - name: reboot!
    command: shutdown -r now


処理対象のホスト名とIPアドレスを変数に設定する


vars:
  myhost: '{{ inventory_hostname }}'
  myip: '{{ hostvars[inventory_hostname]["ansible_eth0"]["ipv4"]["address"] }}'

tasks:
  - debug: var=myhost
  - debug: var=myip