無能が苦悩したメモ

無能な著者が学んだことを忘れないための覚え書きです...

Ansible:ansible-galaxyコマンドでroleのひな型を作成

ansible-galaxyコマンドを使うことでroleのひな型を作成できます。
roleに関連するディレクトリやmain.ymlを作成する手間がすこし省けるかも。

以下がコマンドとその実行結果です。
tasksやhandllersなどのディレクトリ、そして、ディレクトリの下にmain.ymlが作成されています。ここから必要なディレクトリ以外は削除していけばよさそうです。

$ ansible-galaxy init  test_role
- Role test_role was created successfully
$
$ tree test_role/
test_role/
|-- README.md
|-- defaults
|   `-- main.yml
|-- files
|-- handlers
|   `-- main.yml
|-- meta
|   `-- main.yml
|-- tasks
|   `-- main.yml
|-- templates
|-- tests
|   |-- inventory
|   `-- test.yml
`-- vars
    `-- main.yml

8 directories, 8 files

ちなみに、main.ymlの中身は基本的にコメント行のみです。

---
# tasks file for test_role

---
# vars file for test_role


role-skeltonオプション

ansible-galaxy initに--role-skeletonオプションというのがありました。
このオプションを使えば、自身で作成したロールをひな型として新たにロールを作成することができるようです。

ためしに、test_roleというroleをひな型としてtest_role2というroleを作ることにします。


test_roleは以下のような構造になっています。

$ tree test_role
test_role
|-- README.md
|-- files
|   `-- hello.txt
|-- tasks
|   `-- main.yml
`-- vars

3 directories, 3 files
$
$ cat test_role/tasks/main.yml
---
- name: copied hello.txt
  copy:
    src: hello.txt
    dest: /tmp/hello.txt
    mode: 0644


ansible-galaxy initの実行結果が以下になります。
test_roleのディレクトリ構造と同じようにtest_role2が作られているのが確認できました。また、tasks/main.ymlの中身もまるっきり同じ内容になっています。(普通のディレクトリコピーと何か違うのだろうか…)

$ ansible-galaxy init --role-skeleton ./test_role test_role2
- Role test_role2 was created successfully
$
$ tree test_role2/
test_role2/
|-- README.md
|-- files
|   `-- hello.txt
|-- tasks
|   `-- main.yml
`-- vars

3 directories, 3 files
$
$ cat test_role2/tasks/main.yml
---
- name: copied hello.txt
  copy:
    src: hello.txt
    dest: /tmp/hello.txt
    mode: 0644