ansible実行時のエラー

表題の通り。Amazon Linux上のansibleで、`–syntax-check`では問題なかったので実行してみたらエラーで落ちた。

■ 環境

  • Ansible 2.2.1.0, 2.3.1.0
  • Amazon Linux

■ error

下記のようなエラーが出た。

fatal: [XX.XX.XX.X1]: FAILED! => {"changed": false, "failed": true, "msg": "unsupported parameter for module: path"}
fatal: [XX.XX.XX.X2]: FAILED! => {"changed": false, "failed": true, "msg": "unsupported parameter for module: path"}

さて何だろう?実行前に`–syntax-check`で確認したところ問題はなかったのだが。

というところでふと思い出した。Amazon Linux上では`yum update`の対象に入っていなかったことに。

AmazonLinuxにAnsibleをインストール

versionを確認する。

$ ansible --version
ansible 2.2.1.0
  :
$

というわけで、実行していたplaybookでは”path“を使っている箇所があったのが原因であったようだ。”2.2“以前では”dest”で指定する必要がある。”2.3“からのマニュアルでは”dest“は消えて”path“となっている。ローカルも”2.3.1.0“にあげていたので全て”path“で書いていたようである。

Amazon Linux上の`ansible`を`update`して再度実行するとエラーなく実行することができた。

$ sudo yum --enablerepo=epel update ansible

以上。

■ 関連

AmazonLinuxにAnsibleをインストール

グループの親子関係

Ansibleにおいて表題の通り。

■ 環境

  • Ansible 2.3.1.0

■ InventoryFile

下記のように親子関係を持つことが可能だ。

$ cat hosts
[projectA:children]
sub1
sub2

[sub1]
192.168.33.11
192.168.33.12

[sub2]
192.168.33.21
192.168.33.22
192.168.33.23

[parent:vars]
ansible_user=withsin
$

projectA“全体に対して実行したい場合は下記のようにする。

$ ansible-playbook example.yml

sub1“のグループのみに実行したい場合は下記のようにする。

$ ansible-playbook example.yml -l sub1

sub2“のグループのみに実行したい場合は下記のようにする。

$ ansible-playbook example.yml -l sub2

変数”ansible_user“は上記の全てで適用される。

また、これらは”example.yml“の中で”hosts: projectA“と書いている場合にも問題なく実行可能である。

以上。

■ 関連

playbook実行時にホストグループを指定

InventoryFileでグループ変数

Ansibleにおいて表題の通り。以前にも書いた気がするのだが、一応メモ。

■ 環境

  • Ansible 2.3.1.0

■ Group Variables

http://docs.ansible.com/ansible/intro_inventory.html#group-variables

グループ全体に対しての変数を書くことが可能である。

$ cat hosts
[web]
192.168.33.11
192.168.33.12

[web:vars]
ansible_ssh_private_key_file=~/.ssh/withsin.pem

[app]
192.168.33.21
192.168.33.22
192.168.33.23

[app:vars]
ansible_user=withsin

と、前にも同じことを何度も書いていることに気がついた。しかも最近ではないか…。

以上。

■ 関連

InventoryFileで全Hostに対する変数

ansible_ssh_private_key_file

playbook実行時にホストグループを指定

ansibleにおいて表題の通り。

■ 環境

  • Ansible 2.3.1.0

■ playbook

playbookには下記のように全てのホストを対象としている場合、とあるホストグループにのみplaybookを実行したい。

$ cat example.yml
- name: example
  hosts: all
  gather_facts: yes
  :

これを下記のように実行してしまうと、Inventoryfileに書いている全てのホストに対して実行されてしまう。

$ ansible-playbook -i hosts example.yml

Inventoryfileには下記のようにホストグループを分けている。

$ cat hosts
[group1]
host001
host002
host003

[group2]
host011
host012

この”group2“にのみ実行をしたい場合は下記のように指定する。

$ ansible-playbook -i hosts -l group2 example.yml

これで”group2“のみに実行できる。

以上。

Google Spreadsheet 変更通知

表題の通り。メモ。

■ 環境

  • Google Spreadsheet

■ 変更通知

共有しているファイルに変更があった場合に通知してほしい。その設定がないのだろうかと見ていたらあった。

該当のSpreadsheetを開く > ツール > 通知ルール 

自身は下記を選択している。

  • 変更が入ったとき
  • メール – その都度

この設定を入れておいたところ、共有している別ユーザが更新した時に下記のようなメールが届いた。

Subject: "【共有しているファイル名】"が更新されました
Body: 
Google ドキュメント「【共有しているファイル名】」の変更内容を確認: ここをクリック
【変更したユーザ】 が 2017/07/18 03:51~03:51(アメリカ太平洋夏時間)に変更を加えました
Google ドキュメント「【共有しているファイル名】」の最新版を開く: ここをクリック

Powered by Google スプレッドシート

差分もわかるし意外と便利であった。

以上。