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も同様の手順で実行できます。
以上。