Ansibleメモ

環境

  • Ansible 2.8

registerを使わずに、なければ空のファイルを作成し、あれば何もしない

- name: Create an empty file if file not exists
  copy:
    dest: /tmp/file.txt
    content: ''
    force: no

追加したyumリポジトリを無効化する

- name: Disable epel repository
  replace:
    path: /etc/yum.repos.d/epel.repo
    regexp: "enabled *= *1"
    replace: "enabled=0"
  become: yes

秘密情報を暗号化する

以下の方法が良いと思う。

GitHubな環境でansible-vaultの暗号化パラメータをうまく管理するコツ - Qiita

ansible.cfg

$ cat ansible.cfg
[defaults]
vault_password_file = ./vault_password
hash_behaviour = merge

[ssh_connection]
pipeline = true
ssh_args = -F ssh_config -o ControlMaster=auto -o ControlPersist=300s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

becomeパスワードを自動入力する

ansible_become_pass変数を定義する。

$ cat group_vars/all.yml
ansible_become_pass: passwd

handlerを共通化する

handlersロールを定義し、playbookから呼び出す。

$ cat roles/handlers/handlers/main.yml
- name: Reboot
  shell: sleep 2 && reboot
  async: 1
  poll: 0
  become: yes

現在日時を変数に格納する

- set_fact:
    epoch: "{{ lookup('pipe','date +%s') }}"

日時を加工する

- debug:
    msg: "{{ '%Y-%m-%dT%H:%M:%S' | strftime(epoch|int + 3600) }}"