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型変数として返すものです。(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