53ningen.com

@gomi_ningen's Website

mac の操作スペースが勝手に並び変わるのを抑止する

mac 素人なので知らなかったけど、デフォルトで操作スペースが利用状況に応じて勝手に並び変わるという迷惑な機能がオンになってます。これ、めちゃくちゃ迷惑でなんとかならないかなーと設定いじってたら Mission Control の設定項目にあったので、即オフにした。 ansible だと以下のような感じでかける。

- name: 操作スペースの自動並び替えを抑止
  osx_defaults:
    domain: com.apple.dock
    key: mru-spaces
    type: bool
    value: false
    state: present

これで安心安全 ...

Read More

寝てる間に MacBook の環境構築を終わらせる

開発にメインで使っている MacBook Pro がいつ壊れても良いように環境構築の 9 割程度を Anisble 化している。どんな感じにやっているのかをご紹介 + 自分用のメモとして書き下します。

Windows 環境も構築を自動化したいけど面倒でやっていない。Windows 自体は普段使い(だらだらネットを巡回)とかでは好きだけど、最近あまりその上で開発をゴリゴリやることはないので、ひとまず macOS について。

MacBook 初回起動時の儀式

このあたりは完全に自動化できてないけどまあ 3 分で終わるので...

  • Command Line Tool のインストール
    • 最初に git ほにゃらら っていれるとインストールしろよ〜って言われるので指示に従う
  • homebrew, Ansible のインストール
    • 2 行で終わる & 構築自動化のファンダメンタルな部分なので、サクッと手打ちしている
  • MacBook  環境構築用 Ansible リポジトリの clone
# homebrew のインストール
/usr/bin/ruby...
Read More

ansible で git clone と remote add upstream を行う

 GitHub リポジトリをクローンして、 git remote add upstream した状態にしたいときは、 remote: upstream を指定すれば良い。例えば、 git@github.com:example/example.git を clone することを考えると、 ansible を次のように書けば OK。

---

- name: clone repository
  become: yes
  become_user: maintainer
  git:
    repo: git@github.com:example/example.git
    dest: /path/to/repos
    remote: upstream
    accept_hostkey: yes
  when: not check_repos.stat.exists

詳細は [Ansible 公式ドキュメント git module](http://docs.ansible.com/ansible/latest/git_module....

Read More

ansible-playbook の --limit を複数指定する

ansible-playbook コマンドで limit を複数指定したい場合はカンマ区切りで group や host を指定すれば良い。例えば gomi-web0[1-3] に playbook 実行をしたい場合は以下のようにしてあげればよい

ansible-playbook -i ./prod --limit gomi-web01,gomi-web02,gomi-web03 ./web.yml

[amazon template=wishlist&asin=4295003271] ...

Read More

ansible-playbook で対象ホストのうちひとつでもコケたら止める

max_fail_percentage を使うと良い感じに inventories で指定したホストのうちのひとつでも処理がコケたときに、Ansible実行を停止できる。公式ドキュメントはこちらを参照。

By default, Ansible will continue executing actions as long as there are hosts in the group that have not yet failed. In some situations, such as with the rolling updates described above, it may be desirable to abort the play when a certain threshold of failures have been reached. To achieve this, as of version 1.3 you can ...

Read More

ansible-lint を CI に組み込む

 この記事では ansible の linter である ansible-lint を実際にどのように CI に組み込んでいるかをご紹介します。といっても、大した内容ではないのですが、あまり記事が出回ってなかったので、ansible-lint 良いぞという気持ちも兼ねて僭越ながら手短にまとめてみました。

ansible-lint の導入

 requirements.txt を以下のように ansible リポジトリにコミットしておき、 pip install -r requirements.txt でインストールしています。

ansible==2.4.3
ansible-lint==3.4.20

.ansible-lint の設定

 実運用上、なかなか標準ルールすべてを満たすのは大変だったり、ちょっと面倒だったり、別にこれはいいんじゃないのみたいなものがあったりします。そんなときには、.ansible-lint の `skip_l...

Read More

特定ホストに対してのみ踏み台を経由して Ansible を実行する

ネットワーク的に踏み台サーバーを経由しないと到達できないサーバーに Ansible を流す

公式ドキュメントに書かれている方法はすべてのサーバーでの作業時に踏み台を踏むような形になるが、外から疎通できない一部のホストだけ踏み台を踏むようにしたい場合は、host_vars に対象ホスト名と同じ名前でファイルを作って、以下のように設定を入れればよい。

---

ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q user@host"'

...

Read More

ansible の vault を使う

この作業ひさびさにやると忘れてるので、自分用のメモ書き

ansible-vault encrypt_string --vault-id a_password_file 'foobar' --name 'the_secret'

playbook 実行時に vault password file をいちいち指定するのはクソだるなので、ansible.cfg に設定しておくとよさげ。

[defaults]
vault_password_file = ../vault-password

この設定いれてるときは encrypt 時にも --valut-id を渡す必要がなくなる

 ansible-vault encrypt_string 'foobar' --name 'the_secret'

ベンリ ...

Read More

ansible のソースコードを実行する

ansible のソースコードを直接実行したい

  • 頻繁にバージョンを切り替えたり、なんなり色々したい
git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
# sudo easy_install pip    #=> まだ pip がはいっていないとき
sudo pip install paramiko PyYAML Jinja2 httplib2 six
git checkout #お好きなコミット#
ansible --version #=> コミットに対応するバージョンが用いられる

# 起動時に ansible にパスを通す
echo 'source (ansible_working_dir)/hacking/env-setup -q' >> ~/.bash_profile

...

Read More

Copyright © 53ningen.com