Vagrant + Ansible環境で、Ansible GalaxyからダウンロードしたRoleの使用方法です。
環境のセットアップは、「Vagrant – Ansibleを使ってプロビジョニングする」と同様です。
環境
- macOS Sierra
- Vagrant 2.0.0
- Ubuntu 16.04
目的
- Ansible Galaxyに登録されている geerlingguy.firewall を使ってファイアーウォールをセットアップしてみます。
フォルダ構成
Vagrant用のフォルダ ~/vagrant/master
は次の構成になっています。
- Vagrantfile - provisioning - group_vars - roles - playbook.yml - ansible.cfg
Roleのパスを設定する
ansible.cfg
にはRoleの格納パスを設定します。ここにAnsibleGalaxyからダウンロードしたRoleが置かれます。
[defaults] # roleのパス roles_path = ./roles
Ansible GalaxyからRoleをダウンロードする
まずはAnsibleの作業フォルダに移動し、ansible-galaxy
コマンドでRoleをダウンロードします。
例として geerlingguy.firewall をダウンロードしてみます。インストール方法は同ページに書いてある通り、次のようにします。
cd ~/vagrant/master/provisioning $ ansible-galaxy install geerlingguy.firewall
rolesフォルダにgeerlingguy.firewallがダウンロードされました。
このダウンロードされたRoleのコードを直接編集してしまうと、Roleを再ダウンロードするときに差分の調整が手間になるので、Roleは編集しないほうがよいかもしれません。
パラメータのユーザー値を定義する
ダウンロードされたRoleにはdefaults
フォルダがあるかと思います。ここにはデフォルトのパラメータが定義されています。
デフォルトのパラメータで用途に合わない場合は、group_vars
フォルダにユーザー値を定義することで、デフォルトのパラメータをオーバーライドできます。
group_vars
にall.yml(任意の名前)
を作り、そこにユーザー定義のパラメータを定義します。ここではfrewall_allowed_tcp_portsh変数
の値を変更しています。
@all.yml
--- # all.yml # geerlingguy.firewall firewall_allowed_tcp_ports: - "22" - "80" - "443"
パラメータの変更の仕方は AnsibleGalaxyの各Roleのドキュメントを見ます。
実行するRoleを定義する
実行するRoleはplaybook.yml
に記述します。
Roleにはsudoユーザーで実行しなければいけないものと、通常ユーザーで実行するものがあります。この辺りはapt-get
でインストールするときと同様です。
- sudoユーザーになるには、
become: yes
を使います。 roles
に実行するRoleを記述します。
--- # sudo userで実行するRole - hosts: all become: yes tasks: - debug: msg="sudo user role." roles: - geerlingguy.firewall # 通常userで実行するRole - hosts: all tasks: - debug: msg="normal user role." roles: # 今は何もなし
実行する
vagrant provision
で実行します。エラーなく実行できれば成功です。
$ vagrant provision 省略 PLAY RECAP ********************************************************************* default : ok=10 changed=5 unreachable=0 failed=0
もう一度vagrant provision
で実行すると、すでに全く同じ設定でインストールされているので changed=0
として完了します。
$ vagrant provision 省略 PLAY RECAP ********************************************************************* default : ok=9 changed=0 unreachable=0 failed=0
これでファイアーウォールの設定ができました。パラメータを変えたら都度 vagrant provision
を実行すればOKです。
その他のAnsibleGalaxyのRoleも同様の手順で実行できます。
以上。