Ansibleモジュールを作成した際のファイル書き出し先は、libraryではなくplaybook

公開日:2017-01-15 更新日:2020-10-02

Ansible Python

t f B! P L

てっきり.pyファイルが置いてあるlibrary/がカレントディレクトリになると思っていたが、ansibleコマンドを実行しているplaybookだった。

■実行前のフォルダ構造

(ansible_work) ~/ansible_work/ansible_module_work $ tree
.
├── library
│   └── export_date_file.py
└── test.yml

■playbookの内容

(ansible_work) ~/ansible_work/ansible_module_work $ cat test.yml
- hosts:
  - all
  tasks:
    - name: export_date_file
      export_date_file:
        path:
(ansible_work) ~/ansible_work/ansible_module_work $

■モジュールの中身
dateの出力内容をファイルに書き出す

(ansible_work) ~/ansible_work/ansible_module_work $ cat library/export_date_file.py
#!/usr/bin/python

from ansible.module_utils.basic import *
import datetime


def main():
    module = AnsibleModule(
        argument_spec=dict(
            path=dict(required=False),
        )
    )
    args = module.params

    path = args.get('path') or './timelog.txt'
    date = str(datetime.datetime.now())

    f = open(path, 'a')
    f.write("%s\n"%(date))

    message = "%s %s" % (path, date)

    module.exit_json(message=message, changed=True)


if __name__ == '__main__':
    main()
(ansible_work) ~/ansible_work/ansible_module_work $

■実行

(ansible_work) ~/ansible_work/ansible_module_work $ ansible-playbook -i "localhost," -c local test.yml -vv
No config file found; using defaults

PLAYBOOK: test.yml *************************************************************
1 plays in test.yml

PLAY [all] *********************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [export_date_file] ********************************************************
task path: /Users/hoge/ansible_work/ansible_module_work/test.yml:4
changed: [localhost] => {"changed": true, "message": "./timelog.txt 2017-01-15 10:05:10.912463"}

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0

(ansible_work) ~/ansible_work/ansible_module_work $

■できたファイル確認

(ansible_work) ~/ansible_work/ansible_module_work $ tree
.
├── library
│   └── export_date_file.py
├── test.yml
└── timelog.txt

(ansible_work) ~/ansible_work/ansible_module_work $ cat timelog.txt
2017-01-15 09:54:09.724616
(ansible_work) ~/ansible_work/ansible_module_work $

About me

ゆかき(♀)

アラサー駆け出しインフラエンジニア
ど文系営業からSEへ転身し日々奮闘している人

一児の母

#AP応用情報 #HTML5Lv1 #第2種電気工事士 #DCP(Data Center Practitioner) #LPIC Lv2 #VCP6.5 #CCNP #Oracle Bronze #HTMLv5 #TOEIC860

Media

こちらのイベントで記事紹介いただいていた、嬉しい。

Line stamp

僭越ながら販売中

Green cat & Orange cat

Amazon