AnsibleのModule:yum
お疲れ様です。伊藤です。
yumについてです。まずは説明文はこちら。
yumパッケージマネージャを使用して、パッケージとグループをインストール、アップグレード、削除、および一覧表示します。
これもそのまんまですね。つまりはLinuxのyumと同等ということで。
オプションはこちら。
パラメータ | 必須 | デフォルト | 選択肢 | 備考 |
---|---|---|---|---|
conf_file | no | トランザクションに使用するリモートのyum構成ファイル。 | ||
disable_gpg_check | no | no | yes no | インストールされているパッケージのシグネチャのGPGチェックを無効にするかどうか。 状態が存在または最新の場合にのみ効果があります。 |
disablerepo | no | インストール/アップデート操作を無効にするリポジトリの Repoid これらのレポはトランザクションを超えて存続しません。 複数のreposを指定する場合は、それらを "、"で区切ります。 | ||
enablerepo | no | インストール/アップデート操作を有効にするリポジトリの Repoid これらのレポはトランザクションを超えて存続しません。 複数のreposを指定する場合は、それらを "、"で区切ります。 | ||
exclude | no | state = present、またはlatestのときに除外するパッケージ名 | ||
installroot | no | / | すべてのパッケージがインストールされる相対的なインストールルートを指定します。 | |
list | no | yum list |
||
name | yes | パッケージ名、または name-1.0 のようなバージョンのパッケージ指定子。 state = latestを使用する場合、これは '*'となります。これは実行を意味します:yum -y update。 urlまたはローカルパスをrpmファイルに渡すこともできます(state = presentを使用)。 いくつかのパッケージを操作するには、コンマで区切られたパッケージのリストまたは(2.0以降)パッケージのリストを受け入れることができます。 | ||
skip_broken | no | no | yes no | 変換によって問題の原因となっているパッケージを削除することで、デプロソルブの問題を解決します。 |
state | no | present | present latest absent | presentの場合はパッケージをインストールします。latestの場合は最新版に更新します。absentの場合はパッケージをアンインストールします。 |
update_cache | no | no | yes no | yumにキャッシュが期限切れであるかどうかを確認させ、必要に応じて再ダウンロードする。 状態が存在または最新の場合にのみ効果があります。 |
validate_certs | no | yes | yes no | これは、rpmのソースとしてhttps urlを使用している場合にのみ適用されます。例えばローカルインストール用。 noに設定すると、SSL証明書は検証されません。これは、ソースサイトの確認を避けるため、自己署名証明書を使用して個人的に管理されるサイトではnoに設定する必要があります。2.1より前は、これがyesに設定されているかのようにコードが機能しました。 |
意外に少ないですね。
続いてPlaybookの例です。以前はrpmを指定してインストールが出来なかったのですが、こちらを見るとあっさりできてますね。
# Apacheの最新バージョンをインストールする - name: install the latest version of Apache yum: name: httpd state: latest # Apacheパッケージを削除する - name: remove the Apache package yum: name: httpd state: absent # テスト用のレポから最新のバージョンのApacheをインストールする - name: install the latest version of Apache from the testing repo yum: name: httpd enablerepo: testing state: present # 特定のバージョンのApacheをインストールする - name: install one specific version of Apache yum: name: httpd-2.2.29-1.4.amzn1 state: present # すべてのパッケージをアップグレードする - name: upgrade all packages yum: name: '*' state: latest # リモートrepoからnginx rpmをインストールする - name: install the nginx rpm from a remote repo yum: name: http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state: present # ローカルファイルからnginx rpmをインストールする - name: install nginx rpm from a local file yum: name: /usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm state: present # '開発ツール'パッケージグループをインストールする - name: install the 'Development tools' package group yum: name: "@Development tools" state: present # 'Gnomeデスクトップ'環境グループをインストールする - name: install the 'Gnome desktop' environment group yum: name: "@^gnome-desktop-environment" state: present # 可能なパッケージを一覧表示し、結果を登録して後でデバッグする。 - name: List ansible packages and register result to print with debug later. yum: list: ansible register: result
この例を見るだけで大体のことは問題なくできるかと思います。外部接続ができない環境ではcopyモジュールでrpmファイルをコピー後、yumモジュールでインストールの流れになるかと思います。
お疲れ様でした。
AnsibleのModule:user
お疲れ様です。伊藤です。
Moduleについてまだ書いていきます。続いてはuserです。
説明文はこちら。
ユーザーアカウントとユーザー属性を管理します。
う~ん、あっさり。機能も基本的にはuseradd、userdelコマンドと一緒です。
ではオプション。
パラメータ | 必須 | デフォルト | 選択肢 | 備考 |
---|---|---|---|---|
append | no | no | yes no | yes の場合、グループを追加するだけで、グループのリストには設定しません。 |
comment | no | オプションで、ユーザーアカウントの説明(別名 GECOS )を設定します。 | ||
createhome | no | yes | yes no | no に設定されていない限り、アカウントが作成されたとき、またはホームディレクトリが存在しないときに、ユーザのホームディレクトリが作成されます。 |
expires | no | None | エポックでのユーザーの有効期限は、これをサポートしていないプラットフォームでは無視されます。 現在、LinuxとFreeBSDでサポートされています。 | |
force | no | no | yes no | state = absent で使用すると、動作は userdel --force のようになります。 |
generate_ssh_key | no | no | yes no | 問題のユーザーのSSHキーを生成するかどうか。 これは、既存のSSH鍵を上書きしません。 |
group | no | オプションで、ユーザーのプライマリグループを設定します(グループ名を使用します)。 | ||
groups | no | ユーザーをグループのリストに入れます。 空の文字列( 'groups =')に設定すると、プライマリグループ以外のすべてのグループからユーザが削除されます。 | ||
home | no | オプションで、ユーザーのホームディレクトリを設定します。 | ||
login_class | no | オプションで、FreeBSD、OpenBSD、およびNetBSDシステムのユーザのログインクラスを設定します。 | ||
move_home | no | no | yes no | home = で使用するときに yes に設定すると、ユーザーのホームディレクトリが指定されたディレクトリに移動します。 |
name | yes | 作成、削除、または変更するユーザーの名前。 | ||
non_unique | no | no | yes no | オプションで-uオプションとともに使用する場合、このオプションを使用すると、ユーザーIDを一意でない値に変更できます。 |
password | no | オプションで、ユーザーのパスワードをこの暗号化された値に設定します。playbookでこれがどのように見えるかについては、github examplesディレクトリのユーザーの例を参照してください。これらのパスワード値を生成するさまざまな方法の詳細については、http://docs.ansible.com/ansible/faq.html#how-do-i-generate-crypted-passwords-for-the-user-moduleを参照してください。 Darwinシステムでは、この値はクリアテキストでなければなりません。セキュリティ上の問題に注意してください。 | ||
remove | no | no | yes no | state = absent で使用すると、動作は userdel --remove のようになります。 |
seuser | no | オプションで、selinux対応システムでseuserタイプ(user_u)を設定します。 | ||
shell | no | オプションで、ユーザーのシェルを設定します。 | ||
skeleton | no | オプションで、ホームスケルトンディレクトリを設定します。 createhomeオプションが必要です! | ||
ssh_key_bits | no | default set by ssh-keygen | オプションで、作成するSSHキーのビット数を指定します。 | |
ssh_key_comment | no | ansible-generated on $HOSTNAME | オプションで、SSHキーのコメントを定義します。 | |
ssh_key_file | no | .ssh/id_rsa | オプションで、SSHキーファイル名を指定します。 これが相対ファイル名の場合、ユーザーのホームディレクトリからの相対パスになります。 | |
ssh_key_passphrase | no | SSH鍵のパスフレーズを設定します。 パスフレーズが指定されていない場合、SSHキーはデフォルトでパスフレーズを持ちません。 | ||
ssh_key_type | no | rsa | オプションで、生成するSSH鍵のタイプを指定します。 使用可能なSSH鍵のタイプは、ターゲットホスト上の実装に依存します。 | |
state | no | present | present absent | presentの場合は、アカウントが存在しない場合は作成、存在する場合は設定どおりに変更します。absentの場合はユーザが存在する場合には削除します。 |
system | no | no | yes no | アカウントを作成するときにこれを yes に設定すると、ユーザーはシステムアカウントになります。 既存のユーザーはこの設定を変更できません。 |
uid | no | オプションで、ユーザーの UID を設定します。 | ||
update_password | no | always | always on_create | パスワードが異なる場合は、 always がパスワードを更新します。 on_create は新しく作成されたユーザーのパスワードのみを設定します。 |
ふう、、結構多いですね。特に注意が必要なのがpasswordです。playbookに記載するパスワードはハッシュ化する必要があります。というかありましたが、最近のバージョンアップでそのままでも行けるようになったようです。記載方法は下記のような感じ
- user: name: test_user state: present password: {{ '任意のパスワード' | password_hash('sha512') }}
playbook例はこちら
# ユーザー 'johnd'を特定のuidとプライマリグループ 'admin'で追加します。 - user: name: johnd comment: "John Doe" uid: 1040 group: admin # ユーザー 'james'をbashシェルで追加し、 'admins'グループと 'developers'グループをユーザーのグループに追加します - user: name: james shell: /bin/bash groups: admins,developers append: yes # ユーザー 'johnd'を削除する - user: name: johnd state: absent remove: yes # 〜jsmith / .ssh / id_rsaのユーザーjsmith用に2048ビットのSSH鍵を作成する - user: name: jsmith generate_ssh_key: yes ssh_key_bits: 2048 ssh_key_file: .ssh/id_rsa # アカウントを期限切れにしたいコンサルタントを追加しました - user: name: james18 shell: /bin/zsh groups: developers expires: 1422403387
ユーザに関してはとりあえず作成と削除ができればよいかと思います。
お疲れ様でした。