[Ansible] リストを使った繰り返し処理 (with_items)

ベタに書いた以下のコードを簡略化したい。

with_itemsを使えば変数をリストとして定義することで短くできる。

参考サイト

ansible.builtin.items lookup – list of items — Ansible Documentation
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/items_lookup.html

Ansibleを効果的に使うのに欠かせないPlaybookの基本的な書き方まとめ:Ansibleで始めるサーバ作業自動化入門(3)(1/2 ページ) – @IT
https://atmarkit.itmedia.co.jp/ait/articles/1607/26/news013.html#021
2016年07月26日

[Ansible] サービスの管理 (serviceモジュール)

Apacheなどのサービスの起動や停止などを行うにはserviceモジュールを使う。

良く使うパラメータ

  • name (文字列/必須) – サービスの名前
  • state (文字列) – サービスのステータス (started/stopped/reloaded/restarted)
  • enabled (論理値) – ブート時に自動起動するか (yes/no)

記述例

参考サイト

ansible.builtin.service module – Manage services — Ansible Documentation
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_module.html

[Laravel] 配列&オブジェクトのヘルパー関数 (3)

公式サイトを見て知識を入れる。

Helpers – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/master/helpers

Arr::sortRecursive($array)

部分配列(数値によるインデックス)にはsort関数を、連想配列にはksort関数を用いて、配列を再帰的にソートする。

Arr::toCssClasses($array)

CSSクラスの文字列を条件付きでコンパイルする。引数にはクラスの配列を指定する。配列のキーは追加したいクラス、値にはクラスの有効/無効をブール値で指定する。配列の要素が数値キーの場合は、それは常にレンダリングされたクラスリストに含まれる。

Arr::undot($array)

ドット記法を用いた1次元配列を多次元配列に展開する。

Arr::where($array, $callback)

与えられたクロージャを用いて配列をフィルターする。

Arr::whereNotNull($array)

与えられた配列から全てのnull値を削除する。

Arr::wrap($string)

与えられた値を配列でラップする。与えられた値が既に配列ならば、変更せずにそのまま返す。与えられた値がnullならば、空の配列を返す。

data_fill($target, $key, $value)

ネストされた配列またはオブジェクト内の不足している値を “ドット” 表記で設定する。ワイルドカードとしてアスタリスクも使用できる。

data_get($target, $key, $default=null)

ネストされた配列またはオブジェクトから、ドット記法で値を取得する。指定されたキーが見つからなかった場合に返されるデフォルト値も指定できる。ワイルドカードとしてアスタリスクも使用可能で、ワイルドカードにより配列やオブジェクトの任意のキーを対象とすることができる。

data_set($target, $key, $value, $overwrite=true)

ネストした配列やオブジェクトに値を設定する。ワイルドカードとしてアスタリスクも使用可能で、それに応じてターゲットに値を設定することができる。デフォルトでは規定の値は全て上書きされる。値が存在しない場合のみ値を設定したい場合には、4番目の引数にfalseを指定する。

head($array)

与えられた配列の最初の要素を返す。

last($array)

与えられた配列の最後の要素を返す。

[Laravel] 配列&オブジェクトのヘルパー関数 (2)

公式サイトを見て知識を入れる。

Helpers – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/master/helpers

Arr::hasAny($array, $keys)

ドット表記で与えられたセット中の任意の項目が配列中に存在するか調べる。

Arr::isAssoc(array $array)

与えられた配列が連想配列か調べる。ゼロから始まる整数連番を持たなければ連想配列と見なす。

Arr::isList($array)

与えられた配列のキーがゼロから始まる整数連番か調べる。

Arr::last($array, callable $callback = null, $default = null)

与えられた判定にマッチした配列の最後の要素を返す。

マッチしなかったときに返すデフォルト値を3番目の引数に指定できる。

Arr::only($array, $keys)

与えられた配列から指定されたキー/値のペアだけを返す。

Arr::pluck($array, $value, $key = null)

配列から与えられたキーに関する全ての値を取得する。

結果リストのキー付けの方法も指定できる。

Arr::prepend($array, $value, $key = null)

配列の先頭に項目を追加(プッシュ)する。

必要ならば値に使われるキーも指定できる。

Arr::pull(&$array, $key, $default = null)

キー/値のペアを返して配列からは削除する。

キーが存在しない場合に返される値を3番目の引数に指定できる。

Arr::query($array)

配列をクエリー文字列に変換する。

Arr::random($array, $number = null, $preserveKeys = false)

配列からランダムな値を返す。

返す項目の数を2番目の引数に指定できる。2番目の引数が指定された場合は、値が1つだけ必要な場合でも配列が返される。

Arr::set(&$array, $key, $value)

ドット表記を使ってネストが深い配列に値をセットする。

Arr::shuffle($array, $seed = null)

配列中の項目をランダムにシャッフルする。

Arr::sort($array, $callback = null)

値で配列をソートする。

続く。

[Laravel] 配列&オブジェクトのヘルパー関数 (1)

公式サイトを見て知識を入れる。

Helpers – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/master/helpers

Arr::accessible($value)

与えられた値が配列アクセス可能か調べる。

Arr::add($array, $key, $value)

与えられたキーがまだ配列中に存在しない、あるいはキーは存在するが値がnullならば、キー/値のペアを配列に追加する。

Arr::collapse($array)

配列の配列を単一配列に変換する。

Arr::crossJoin(…$arrays)

与えられた複数の配列を交差結合(cross join)して、すべての可能な組み合わせを持つデカルト積を返す。

Arr::divide($array)

与えられた配列に関して、キーを格納する配列と値を格納する配列の2つを返す。

Arr::dot($array, $prepend = ”)

多次元配列を、深さを示すドット表記を使った単一配列に変換する。

Arr::except($array, $keys)

与えられたキー/値のペアを配列から削除する。

Arr::exists($array, $key)

与えられたキーが配列中に存在するか調べる。

Arr::first($array, callable $callback = null, $default = null)

与えられた判定にマッチした最初の要素を返す。

マッチしなかったときに返すデフォルト値を3番目の引数に指定できる。

Arr::flatten($array, $depth = INF)

多次元配列を単一配列に変換する。

Arr::forget(&$array, $keys)

ドット表記を使ってネストが深い配列から与えられたキー/値のペアを削除する。

Arr::get($array, $key, $default = null)

ドット表記を使ってネストが深い配列から値が取得する。

指定されたキーが配列中に存在しない場合に返すデフォルト値を3番目の引数に指定できる。

Arr::has($array, $keys)

ドット表記を使って配列中に項目(または項目群)が存在するか調べる。

続く。

[Ansible] debugモジュール – 実行中のステートメントを表示する

debugモジュールを使うと、実行中のステートメントを表示できる。

参考サイト

ansible.builtin.debug module – Print statements during execution — Ansible Documentation
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/debug_module.html

Ansible モジュール debug – Qiita
https://qiita.com/CsFactoryitter/items/6f1b5464b7a44b5e0c13

[Ansible] registerモジュール – コマンドの結果を変数として登録する

registerモジュールを使うと、コマンドの結果を変数として登録できる。

結果はモジュールごとに異なるので、各モジュールのドキュメントのRETURNセクションを参照。

参考サイト

変数の使用 — Ansible Documentation
https://docs.ansible.com/ansible/2.9_ja/user_guide/playbooks_variables.html?highlight=register

Return Values — Ansible Documentation
https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html

Ansibleで実行結果の値を使って処理を変えたい〜registerの使い方〜 – Qiita
https://qiita.com/atsushi586/items/a591f1c6dee66773aaeb

[Ansible] ローカルで実行するには

プレイブックのtargetsセクションにはhostsの記述が必須だけど、ローカルで実行したい場合にはどうしたらいいか。

プレイの全てのタスクをローカルで実行したい場合

hosts: localhost と指定する。

プレイ内の特定のタスクだけをローカルで実行したい場合

delegate_toを指定する。

複数タスクをローカルで実行したい場合

タスクごとにdelegate_toを指定するか、以下のようにblockで括る。

参考サイト

Ansibleのローカル実行 – Qiita
https://qiita.com/hiroyuki_onodera/items/e6d0d308eb44e26fa03f

[Ansible] インベントリの書き方

基本的な書き方

子グループの定義

よく使いそうなAnsible変数

  • ansible_host: IPアドレス
  • ansible_user: ログインユーザー名
  • ansible_password: ログインパスワード
  • ansible_ssh_private_key_file: 秘密鍵のパス
  • ansible_python_interpreter: Pythonのパス
  • ansible_port: ポート番号

参考サイト

インベントリーの基本|Ansible の使い方
https://zenn.dev/y_mrok/books/ansible-no-tsukaikata/viewer/chapter5