Ansible 1.9がリリースされました
2015年3月25日にAnsible 1.9がリリースされました。結構な量が追加・変更されていますので、ここでリリースノートを訳してみなさまのお役に立てればと思います。基本的に互換性が確保されていますので、playbookを書きなおす必要はないと思います。ただし、gitモジュールなどのバージョン管理システム用のモジュールでローカルに変更があると失敗するという、安全側に倒した変更がされていますので、その点でplaybookを変更する必要があるかもしれません。
なお、1.9は1系の最後のリリースとなります。大幅に書きなおされたAnsible 2.0は近いうちに出る予定です。
リリースURL:https://github.com/ansible/ansible/blob/devel/CHANGELOG.md#19-dancing-in-the-street---mar-25-2015
1.9 "Dancing In the Street" - Mar 25, 2015
大きな変更
- winrm connection pluginでkerberosがサポートされました。
- タグの追加: 'all', 'always', 'untagged', 'tagged'という特別なタグが追加されました。--list-tasksや新しく追加された--list-tagsオプションでタグの情報を見れます。
- 権限昇格の 'Become' システムが導入され、変数やメソッドで変更がありました。 sudoやsuは後方互換性があります。pbrunとpfexecが実験段階として導入されました。また、runasがwinrm connection pluginで追加されました。
- ssh接続のエラー表示を改良しました。
- モジュールでの返り値に関してドキュメントが追加され、ansible-docコマンドとwebサイトで更新されました。 copy、stats、aclモジュールのドキュメントを徐々に更新していきます。
- plugin loaderとcache pluginを最適化しました。場合によっては、起動時に劇的な速度向上が見込めます。
- checksum機構を作り直し、いろいろな場所でちゃんとチェックするようにしました。
- no_logが指定されている場合、スキップされたタスクでパラメータを表示しないようにしました。
- unicode サポートでたくさんの修正が入りました。input/outputの境界上で問題が起きないように関数を標準化しました。
- githubでtravisのCIを追加しました。これで、チケットのトリアージとmergeの速度を向上できます。
- environment:ディレクティブがplay全体で設定できるようになりました。各taskはこれを継承しますし、各taskで上書きも出来ます。
- fact収集でOS/ディストリビューションのサポートを強化しました。また、pypyでの速度を向上しました。
- lookupにwantlistオプションを追加しました。これは、list型変数を command delimited stringとして返すものです。(訳注: なんか違う?)
- fileバックアップに関する共用モジュールで、タイムスタンプの精度を秒にしました (以前は分でした)
- 空のinventoryを許可するようにしました。警告はでますがエラーにはなりません。(localhostやcloudモジュールで使います)
- CParser loaderに切り替えたことで、YAMLのパース速度を25%向上しました。
新しいモジュール
- cryptab
- linux 暗号化 block devicesの管理
- gce_img
- GCE image resourcesの管理
- gluster_volume
- glusterfs volumesの管理
- haproxy
- haproxyの管理
- known_hosts
- sshのknown_hosts file
- lxc_container
- lxc containers管理
- patch
- patchコマンドで対象システムでpatchをあてる
- pkg5
- Solarisでのパッケージ管理
- pkg5_publisher
- Solaris pkg5 repository 設定管理
- postgresql_ext
- postgresql 拡張を管理
- snmp_facts
- snmpを使ってfactを収集
- svc
- daemontool based serviceの管理
- uptimerobot
- Uptime Robot Monitoringの管理
新しいフィルター
- ternary
- trueの場合とfalseの場合と返す値を変える
- cartesian
- 二つのリストのデカルト積を返す
- to_uuid
- 文字列からansible domain specific UUIDを生成する
- checksum
- ansibleが内部で使っているchecksum生成
- hash
- hash文字列を生成 (md5, sha1, etc)
- password_hash
- userモジュールのpasswordで使用できるhash文字列を生成
- ip/network 関連として追加
- ipaddr,ipwrap,ipv4,ipv6ipsubnet,nthhost,hwaddr,macaddr
訳注: フィルターとは、以下の様に使うやつです。今回追加されたhashフィルターの例です。
- debug: msg={{ 'test1' | hash('sha1') }}
その他の目立った変更
- 新lookup plugin:
- dig: DNS解決をしIPアドレスを返す
- url: 指定のURLからデータを取得する
- 新callback plugin:
- syslog_json: playの出力をsyslogにJSON形式で出力する
- Amazon Web service モジュールにたくさんの機能追加
- ec2 で新しいインスタンスを作成するときに、security groupを複数指定出来るようになりました。以前は一つだけでした。
- ec2_vol でEBS Volume typeを指定できるようになりました。
- ec2_vol でinstance=Noneを指定することで detach できるようになりました。
- ec2_group が全部のruleを消してしまうのではなく、特定のgrantsだけを消すように修正しました。
- ec2 でtenancy をサポートしました。
- RDS で tagとcharsetとpublic accessibilityを管理できるようになりました
- ec2_snapshot でスナップショットを削除するためにcapabilityを取得できるようになりました
- route53 でaliasをサポートしました
- route53 でprivate_zonesをサポートしました
- ec2_asg:wait_for_instancesパラメータをサポートしました。これはansibleのtaskが終わる前にそのインスタンスをready状態になるまで待ちます。
- Dockerの機能追加
- restart_policyパラメータで、コンテナの自動再起動を制御できるようになりました。
- もしdockerクライアントやサーバーがオプションをサポートしていなかった場合、そのオプションを勝手に無視するのではなく、taskが失敗するようになりました。
- insecure_registryパラメータをHTTPを使ってregistryにアクセスするための追加しました。
- コンテナのドメイン名を設定するパラメータを追加しました。
- docker_image モジュールを、その機能が完全にカバーできるまで、 deprecated ではなくしました。
- コンテナのPID名前空間を設定できるようになりました。
- pullパラメータを追加し、registryのもっと最近のイメージをansibleが選べるようになりました。
- dockerモジュールで指定できるstatを機能追加しました。以下に新しいstatを記します。
- presentコンテナを作成するが、スタートはしません。
- restartedコンテナを再起動します。
- reloadedansibleが今フィルが変更されていると検知したら、コンテナを先どうします。
- reloaded accounts for exposed ports, env vars, and volumes
- dockerサーバーへの接続にTLSを使えるようになりました
- いくつかのソース管理モジュールはforceパラメータがデフォルトで true でした。これをデフォルトで false に変更されました。これにより、事故で書き潰されてしまうことが防げます。forceがtrueであることを前提としているplaybookは、force=Trueを加えるだけで動きます。影響を受けるモジュールは以下の通りです。
- bzr: checkout時にローカルの変更があると、bzrモジュールはどんな動作を指定しても変更をすべて削除していました。これからはforce=yesが指定されない限り書き潰されることはありません。変更が何もない状態を前提としている動作の場合、失敗することがあります。
- git: checkout時にローカルの変更があると、gitモジュールはforceが指定されていない限り失敗します。force=yesの場合、revertし、変更をすべて巻き戻します。
- hg: bzrと同じ
- subversion: bzrと同じ
- 新inventory script
- vbox: virtualbox
- consul: inventoryをconsulから取得します
- gce:ip_forwardパラメータでIPパケットをフォワードできるようになりました。
- gce:disk_auto_deleteパラメータでインスタンス破棄後にboot diskを消去できるようになりました。
- gce: 外部IPアドレスがなくてもinstanceをspwanできるようになりました。
- gce_pd: diskタイプを選択できるようになりました。
- gce_net:target_tagsパラメータでファイアーウォールのルールを設定できるようになりました。
- rax: boot volumeを作成するパラメータを追加しました。
- nova_compute:scheduler_hintsパラメータを追加しました。
- vsphere_guest: テンプレートからゲストをデプロイ出来るようになりました。
- ファイルに関連するモジュール全部: hardlinkとsoftlinkに関するたくさんの修正
- unarchive: user, group, mode, and selinux パラメータが追加されました。
- authorized_keys: keyの取得先としてURLを指定できるようになりました。
- authorized_keys: taskでkeyが指定されていない場合の処理をexcludeパラメータで指定できるようになりました。 (訳注:exclusive=yesだと、keysで指定した(複数の)key以外のkeyが消される様子)
- selinux:state = disabledの場合、現在のstateを permissiveに変更するようになりました
- user: expireを設定できるようになりました。
- service: 書きなおして、もっといい挙動を示すようにしました。
- yum:update_cacheパラメータが追加され、cacheを更新するように指定できます。
- apt: packageのdependencis にもとづいてインストールできるようにbuild_depパラメータが追加されました
- postgres: DB接続にunix socketを指定できるようになりました
- mount: bind mountをサポートしました。
- git:cloneパラメータを追加しました。これでローカルにリポジトリがなくてもリモートのリポジトリの情報が得られます
- git:refspecパラメータを追加しました。これはbranchの一部ではないコミットをpullできるようになります。
- ドキュメントに関するたくさんの修正
まとめ
細かな改良がいくつも入ったリリースです。特にモジュールやタグについては、「これが欲しかった」という機能が追加されているように思います。