はじめに
ついにansibleでレシピを書きました。本はこの本を一通り読みました。良い本です。
- 作者: Lorin Hochstein,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/04/16
- メディア: 大型本
- この商品を含むブログ (2件) を見る
ansibleのバージョン
実際使わなかったんですが、iptables moduleを使うために2.0をいれました。1.9からのアップグレードは失敗したので、pip uninstall ansibleとpip install ansibleで実施しました。
MacBook-Air:gitlab take$ ansible --version ansible 2.0.2.0 config file = /Users/take/vagrant/gitlab/ansible.cfg configured module search path = Default w/o overrides
Vagrantfile
ほとんどデフォルトです。port転送をしているのみ。
Vagrant.configure(2) do |config| config.vm.box = "CentOS66" config.vm.define :gitlab do | gitlab | gitlab.vm.hostname = "gitlab" gitlab.vm.network "forwarded_port", guest: 80, host: 8080 end end
vagrantに関しては、初めてのansibleでも紹介してあるとおり、以下の書籍がおすすめです。
- 作者: Mitchell Hashimoto,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/02/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る
playbook
gitlabのインストールは公式に従いました。
Download GitLab Community Edition (CE) | GitLab
レシピに変換した内容は以下。
sudo yum install curl openssh-server openssh-clients postfix cronie sudo service postfix start sudo chkconfig postfix on sudo lokkit -s http -s ssh curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash sudo yum install gitlab-ce sudo gitlab-ctl reconfigure
これをplaybookで書くとこうなる。
- name: install gitlab hosts: gitlab become: true tasks: - name: install packages yum: name={{ item }} become: true with_items: - curl - openssh-server - openssh-clients - postfix - cronie - lokkit - name: start postfix service: name=postfix enabled=yes state=started - name: open http and ssh port command: lokkit -s ssh -s http become: true - name: download gitlab get_url: url=https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh dest=/tmp/script.rpm.sh - name: install gitlab command: sh /tmp/script.rpm.sh become: true - name: install gitlab-ce yum: name=gitlab-ce become: true - name: gitlab reconfigure command: gitlab-ctl reconfigure become: true
- with itemsで列挙したものを繰り返しできる
- become trueはsudo
- commandモジュールは冪等性が担保されていない(毎回changeになってしまう)
実行する
MacBook-Air:gitlab take$ ansible-playbook playbooks/gitlab.yml PLAY [install gitlab] ********************************************************** TASK [setup] ******************************************************************* ok: [gitlab] TASK [install packages] ******************************************************** skipping: [gitlab] => (item=[u'curl', u'openssh-server', u'openssh-clients', u'postfix', u'cronie', u'lokkit']) TASK [start postfix] *********************************************************** ok: [gitlab] TASK [open http and ssh port] ************************************************** changed: [gitlab] TASK [download gitlab] ********************************************************* ok: [gitlab] TASK [install gitlab] ********************************************************** changed: [gitlab] TASK [install gitlab-ce] ******************************************************* ok: [gitlab] TASK [gitlab reconfigure] ****************************************************** changed: [gitlab] PLAY RECAP ********************************************************************* gitlab : ok=8 changed=3 unreachable=0 failed=0
changedが毎回3になっちゃうのがイケてないところ。ここは改善の余地あり。
おわりに
playbook、yaml形式はとっても分かりやすいですね。
あと公式モジュールがめちゃくちゃ多くて、たいていのことはできそう。ざっくりした使い方はわかったので、今後は目的にあわせて可能な限りplaybookを作っておきたいです。
module indexのページはブックマークしないと。