ansibleでgolangをインストールするレシピ

グローバルにgoをインストールするレシピを書きました。
一応冪等性も確保。

    # /usr/local/go のディレクトリ有無を確認。ディレクトリが無いときだけ以下のレシピを実行する。
    - stat: path=/usr/local/go
      register: godir
    - name: get golang
      command: wget https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz -O /tmp/golang1.5.tar.gz
      sudo: yes
      when: not godir.stat.exists
    - name: tar golang
      command: tar zxf golang1.5.tar.gz chdir=/tmp
      sudo: yes
      when: not godir.stat.exists
    - name: install golang
      shell: mv /tmp/go /usr/local/go-1.5; ln -s /usr/local/go-1.5 /usr/local/go; echo 'export PATH=$PATH:/usr/local/go/bin' > /etc/profile.d/go.sh
      sudo: yes
      when: not godir.stat.exists

GOPATHは適宜設定しましょう。
(syntaxhighlightのwordpressプラグインってyamlはハイライトできないのね。。)

vagrantでansible

vagrantイメージのプロビジョニングにansibleを使う方法をメモメモ。

  • playbook.ymlを作成する
---
- hosts: all
  tasks:
    - name: step1 (install docker)
      shell: curl -sSL https://get.docker.com/ | sudo sh

    - name: step2 (install libselinux-python)
      yum: name=libselinux-python state=present

    - name: step3 (disable selinux)
      selinux: policy=targeted state=permissive
      sudo: yes
  • Vagrantfile
    Vagrant.configure(2) do |config|
      ...
      config.vm.provision "ansible" do |ansible|
        ansible.playbook = "playbook.yml"
      end
    end
    

golangでツールを一つ作ろうと思ってるので、ついでにansibleにも勉強しようかなーと。
chefやpuppetよりもシンプルで取っつきやすいよね。