yanom blog

様々な技術について書きます

ansible入門

ansibleとは

  • 割愛

特徴

  • エージェントレス
  • サーバはPython 2.6+、ホストはPython 2.4+があれば動作可能

試す

  • インストール
    • pip install ansible
  • sshノーパスログインを設定しておくと簡単(省略)
  • pingを試す
  $ mkdir -p ansible/inventory
  $ vim ansible/inventory/hosts
    [targets]
    対象サーバIP
  $ ansible all -i inventory/hosts -m ping [-u ユーザ名]
  • Playbookを試す
    • test.ymlでtargetsを指定しているため、inventory配下のhostsファイルのtargetsが選ばれる。また、group_vars配下のtargets.ymlの設定は暗黙的に読み込み実行する。
  $ mkdir -p ansible/group_vars
  $ vim ansible/group_vars/targets.yml
    message: "Hello Ansible !"

    fruits:
      apples:
        amount: 10
      bananas:
        amount: 20
      oranges:
        amount: 30

  $ vim ansible/test.yml
    - hosts: targets
      user: root
      tasks:
        - name: output message.
          debug: msg="{{ message }}"

        - name: output fruits
          debug: msg="We want {{ item.value.amount }} {{ item.key }} !" 
          with_dict: "{{ fruits }}"
  $ ansible-playbook -i inventory/hosts test.yml
  • group_vars
    • グループ毎の変数を設定する
  • host_vars
    • ホスト毎の変数を設定する
  • roles
    • roles単位で分割管理を行う。いわゆるクラスやモジュールのイメージ。
  • フォルダ構成
    • 参考(ベストプラクティス)を見るといい。
    • 今の業務レベルではステージパターン(参考:Ansible inventoryパターン)で十分

参考