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は後方互換性があります。 pbrunpfexec が実験段階として導入されました。また、 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型変数として返すものです。(yunanoさんからご指摘がありました。1.9未満ではlookup時にlistは常にカンマ区切り文字列にjoinされて返されていましたが、wantlistオプションを有効にすることによってlistをそのままlistとして返す、ということです)

  • 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 コンテナを再起動します。

      • reloaded ansibleが今フィルが変更されていると検知したら、コンテナを先どうします。

        • 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できるようになります。

  • ドキュメントに関するたくさんの修正

まとめ

細かな改良がいくつも入ったリリースです。特にモジュールやタグについては、「これが欲しかった」という機能が追加されているように思います。

Comments

comments powered by Disqus