share facebook facebook2 twitter menu hatena pocket slack

2015.07.15 WED

今日の ansible 各種知見(モジュール盛り合わせ)

川原 洋平

WRITTEN BY川原 洋平

ども、Ansible 初心者のかっぱです。

解らないことが多いので

気になったことは適宜メモっていくばい。

authorized_key モジュール

ansible というユーザーの authorized_key に追加したい場合。

- authorized_key: user=ansible key="{{ item }}"
  with_file:
    - public_keys/test-foo

public_key/test-foo は以下のように用意しておく。

ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx kappa@ahoaho.local

inlinefile モジュール

MySQL の設定ファイル my.cnf にてバイナリログを有効にする、server-id を有効にする。

  • log-bin=mysql-bin
  • server-id=123456

以下のように task を用意する。

- name: my.cnf update(add replication setting)
  lineinfile: dest=/etc/my.cnf
              insertafter="^[mysqld]"
              line='nlog-bin=mysql-binnserver-id={{ server_id }}'
              backup=yes

以下のように vars/main.yml を用意する。

server_id: 123456

the 冪等性

上記の my.cnf で既にバイナリログの設定、server-id の設定が行われていたらタスクをスキップする。

- name: check line in my.cnf
  shell: egrep "^log-bin|^server-id" /etc/my.cnf
  register: mysql_line_list
  changed_when: false
  always_run: yes

- name: my.cnf update(add replication setting)
  lineinfile: dest=/etc/my.cnf
              insertafter="^[mysqld]"
              line='nlog-bin=mysql-binnserver-id={{ server_id }}'
              backup=yes
  when: mysql_line_list.stdout_lines.count < 1

shell モジュールの結果を mysql_line_list に登録、その結果を以って次の lineinfile のタスクが実行される。(既に設定済みであればスキップする)

結局は...

モジュールを使ってみた的な内容になってすいません。

元記事はこちら

今日の ansible 各種知見(モジュール盛り合わせ)