ansible-galaxyを利用する
ansible-galaxyは、Ansibleで利用するRoleをまとめている、Githubみたいなサービスです。色んな企業や有志の方が、Ansibleで利用できるRole集を公開してくれています。これを使えば、自分でPlaybookを書かなくて済みますし、自分でPlaybook書く場合でも参考になります。
利用方法についてメモ。今回はNginx社が公開しているnginx用のRoleを利用してみます。公式のドキュメントは下記となります。
Installing content — Ansible Documentation
ansible-galaxyのサイトより、公開されているroleをダウンロードしてきます。ダウンロードには ansible-galaxy
コマンドを利用することになり、こいつはAnsibleインストール時に一緒に入っているはずです。
実際のコマンドは下記。 --roles-path
オプションでダウンロード先のpathを指定しています。指定しない場合、Ansibleのグローバル領域となる /etc/ansible/roles
にダウンロードされます。グローバル領域が汚れてしまうの嫌なので、ダウンロード先を指定しています。ダウンロードしたいroleは、 owner_name.role_name
と指定します。今回は、Nginx社が公開しているnginx用ロールなので、 nginxinc.nginx
ですね。
$ ansible-galaxy install --roles-path /mnt/c/_/work/ansible-roles nginxinc.nginx - downloading role 'nginx', owned by nginxinc - downloading role from https://github.com/nginxinc/ansible-role-nginx/archive/0.11.0.tar.gz - extracting nginxinc.nginx to /mnt/c/_/work/ansible-roles/nginxinc.nginx - nginxinc.nginx (0.11.0) was installed successfully $ $ ansible-galaxy list --roles-path /mnt/c/_/work/ansible-roles - nginxinc.nginx, 0.11.0
ファイル一式はgithub上にも公開されており、Readmeを読むなら、こっちを見る方が楽ですね。
GitHub - nginxinc/ansible-role-nginx: Ansible role for NGINX
Readmeと nginxinc.nginx/defaults/main.ymal
で定義されている変数を見ていると、どんなことをしてくれるのか、見えてきます。簡単なwebサーバ設定をするための site.yml
はこんな感じです。 nginxinc.nginx/files/www/
に表示させたいhtmlファイルを置いておきます。
--- - hosts: all become: true roles: - role: nginxinc.nginx vars: nginx_html_upload_enable: true nginx_html_upload_src: www/* nginx_html_upload_dest: /usr/share/nginx/html nginx_http_template_enable: true nginx_http_template: default: template_file: http/default.conf.j2 conf_file_name: default.conf conf_file_location: /etc/nginx/conf.d/ port: 80 server_name: localhost error_page: /usr/share/nginx/html autoindex: false web_server: locations: default: location: / html_file_location: /usr/share/nginx/html html_file_name: index.html autoindex: false http_demo_conf: false
適当にinventoryファイルを作成して、playbookを実行。
$ ansible-playbook -i hosts site.yml ... ... PLAY RECAP ********************************************************************************************************* web : ok=9 changed=6 unreachable=0 failed=0
nginxが設定されています。