新人SEの学習記録

14年度入社SEの学習記録用に始めたブログです。気づけば社会人3年目に突入。

学習記録:Ansible、今後の予定

[学習記録] Ansible

参考書籍

入門Ansible

6章:変数ファイルの暗号化

ansible-vaultの使い方
  • 変数の内容をファイルに記述してきた
    • パスワードやアクセストークンをそのまま記述するのはセキュリティ上よろしくない
    • 公開したくない情報はansible-vaultコマンドを使って暗号化する
  • 暗号化ファイルの作成
    • createを指定して暗号化ファイルを作成
    • パスワードを入力するとエディタが開くので内容を記述
    • エディタを閉じると自動的に暗号化されたファイルが作成される
$ ansible-vault create hoge.yml
Vault password:
Confirm Vault password:
(ここで環境変数EDITORで定義されたエディタが開く)
---
key: value
key2: value2
  • その他のコマンド
    • encrypt:指定したファイルを暗号化する
    • decrypt:暗号ファイルを復元
    • edit:暗号ファイルを直接エディタで編集
    • rekey:パスワードを変更
暗号化されたファイルの使い方
  • 暗号化した変数ファイルをvar_filesで指定
    • ansible-playbook実行時に--ask-vault-passを指定
    • パスワードを聞かれるので入力することで実行できる
    • 暗号化されたファイルを使用していながらパスワードを指定しないとエラーになる
    • 変数名でgrepしたりはできなくなることに注意

7章:公開されているroleを使ってみよう

Ansible Galaxyとは
  • https://galaxy.ansible.com/で公開されているWebサービス
    • 世界中の人が開発しているroleが登録されており、自由にダウンロードして使用k脳
    • 必要なtaskやTemplate・変数が含まれているので、変数を上書きすれば望みの動作に変更可能
    • ChefにおけるCommunity Cookbookと同じだが、同じことを行うroleも複数の人が登録可能
roleの検索方法
  • 右上のBrowse Rolesをクリック
    • Search role nameから関連するキーワードを入力
    • 投稿されたroleには二つのスコアが付けられる
    • Community Scoreはコミュニティの各ユーザがランク付けしたスコア
    • Ansible ScoreはAnsible, Inc.の従業員がランク付けしたスコア
roleの使用方法
  • roleの詳細ページの真ん中のInstallationを見る
    • ansible-galaxy install <ユーザ名.role>
    • これをそのまま任意の場所で実行すると/etc/ansible/roles/以下にインストールされる
    • -pオプションでインストール先を指定することも可能
    • あとは通常通りroleを指定するだけ

よくある質問(抜粋)

接続できない
  1. コマンドラインからsshで接続できるか確認する
  2. -vvvvをつけて実行して表示を見る
  3. トンネル設定をしている場合はparamiko接続だとダメなのでinventoryファイルでansible_connection=sshでOpenSSH接続にする
  4. CentOS 6系ではOpenSSHが古いのでexport ANSIBLE_SSH_ARGS=""を設定しないとダメ
ControlPath too longというエラーが出る

Mac OSXを使っている、もしくはEC2など長いホスト名に対して実行した場合に発生。
sshのControlPathの保存パスが長すぎる場合に発生する。解決するにはansible.cfgで以下を設定

[ssh_connection]
control_path = %(directory)s/%%h-%%r
Windowsで使いたい
  • 現時点ではWindowsを管理ホストとして使用することはできない
    • 次期バージョンの1.7からはできるようになる予定
    • WinRMを利用して通信し、PowerShellを使うモジュールを動かせる
ansibleが収集する変数を知りたい
  • ansibleコマンドでsetupモジュールを実行:ansible -m setup
    • ansible_os_familyなど、ansibleが収集する情報がJSON形式で表示される
---はどういう意味?

YAMLの仕様では、---で区切ることで複数YAMLを一つのファイルに含めることができる。
ただし、複数YAMLを扱うStreamという手法はAnsibleでは使えない。---が無くても全く問題ない。

今後の予定

  • しばらくサボってしまったのでまた学習を再開!
    • ansibleはこれで終わり
    • 次はこの辺かな?

  • .NET gadgeteerとかも面白そう(今の業務に役立つかはともかく…)

iseebi.hatenablog.com

  • 後は応用情報に向けて少しお勉強。
  • プロコンもしばらく予定が合わなくて出られなかったので出たい。まずは4/4のARCかな?