このエントリーをはてなブックマークに追加

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コンテナを再起動します。
      • 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できるようになります。
  • ドキュメントに関するたくさんの修正

まとめ

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