Ansible

##概要 **Ansible(アンシブル)**は、Red Hat社が開発・サポートしているオープンソースの構成管理ソフトウェア。 Ansibleのコアとなる構成管理機能を提供するソフトウェアは、コミュニティで開発されている「Ansible Project」、Red Hat社が有償で提供している「Ansible Engine」が存在する。オーケストレーションツールとして「Ansible Tower」があり、こちらもコミュニティ版の「AWX」が対として存在する。

Ansible, Inc.によって開発が進められていたが、2015年10月にRed HatがAnsible, Inc.を買収し、傘下に収めた。

Linuxだけでなく、Windows Server、vSphere ESXi、OpenStack、AWSやAzure等のIaaS、ネットワーク機器まで管理対象として構成することができる。

特徴

  • エージェントレス 管理対象のノードに対してエージェントのインストールが不要で、AnsibleをインストールしたサーバからSSH(WinRM)経由で接続できれば構成することが可能なため、PuppetやChefなどの従来の構成管理ソフトウェアと比較して、手軽かつ管理対象ノードの環境を汚さずにセットアップすることができる。
  • YAMLの採用(Playbook) 構成を定義する「Playbook」の記法としてYAML を採用している。それにより、プログラミングを経験したことのない人にとっても比較的わかりやすい。 下記に、httpdの更新および再起動を実行するPlaybookの例を示す。 Intro to Playbooks - Ansible Documentation 
--- - hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted
  • Role 各Playbookを「Role」として細分化、部品として本体から切り離すことが可能。これにより、環境に依存することなく再利用することが可能になる。 Ansibleでは、Ansible Galaxy と呼ばれる世界中のユーザが作成したRoleをシェアできる仕組みがあり、いくつものRoleが公開されている。

  • Module AnsibleがPlaybookにもとづき構成管理をする際に使用するコマンド群。PlaybookではModuleに対してパラメータを定義する形で構成定義を行う。例えば、「YAMLの採用(Playbook)」の項で例示したサンプルでは、yumモジュールに対して、パッケージ名(httpd)とそのパッケージの状態(latest)を定義している。

多種多様な環境に対応したModuleが存在し、日々機能追加が行われている。 Moduleの一覧は、公式ドキュメント を参照。