[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

[Ansible] YAMLの基本

AnsibleといえばYAMLなので、参考サイトからYAMLの基本を頭に入れる。

基本ルール

  • — から書き始める = 1 行目は — だけにする
  • … で書き終える = 最終行は … だけにする
  • # から行末までがコメントになる
  • インデントは半角空白 × 2 個で記述する(タブ文字は使用できない)
  • インデントでデータ構造のネストを表現する

データの基本的な表現

リスト

シーケンスとも呼ばれる。

マッピング

“キー:値”。ハッシュ、ディクショナリーとも呼ばれる。

複雑なデータの表現

マッピングの中にマッピングをネスト

シーケンスの中にマッピングをネスト

マッピングの中にシーケンスをネスト

複雑なネスト

参考サイト

YAML|Ansible の使い方
https://zenn.dev/y_mrok/books/ansible-no-tsukaikata/viewer/chapter3
↑Ansibleの基本理解に役立つ無料で読める本。著者に感謝。

[Ansible] -eオプションでansible_python_interpreterを指定する

EC2(Amazon Linux 2)にAnsibleをインストールしてアドホックコマンドを実行したら、Python絡みの警告が表示された。

Ansibleのバージョンを表示すると、Python 2.7.18が連携している模様。

公式サイトの Python 3 サポート ページを見ると以下の記述がある。

  • Ansible は Python バージョン 3.5 以降でのみ動作します。
  • Ansible は、多数のプラットフォームに同梱されている Python 3 を自動的に検出して使用します。

Amazonのリポジトリからインストールしたのだけど、Python 3の自動検知が上手くいかずにPython 2が使われているのかなあ。

-eオプションを使って明示的にPythonモジュールを指定したら警告は消えたけど、

根本的な原因究明は後回し。

参考サイト

Python 3 サポート — Ansible Documentation
https://docs.ansible.com/ansible/2.9_ja/reference_appendices/python_3_support.html

ansible — Ansible Documentation
https://docs.ansible.com/ansible/2.9_ja/cli/ansible.html#ansible

[Ansible] Amazon Linux 2にAnsibleをインストールする

環境確認。

amazon-linux-extraがインストールされていることを確認。

amazon-linux-extraでansibleが使用可能であることを確認。

Ansibleを有効にする。

Ansibleをインストールする。

これで完了。

参考サイト

Amazon Linux2にAnisbleをインストールする方法 – Qiita
https://qiita.com/1_ta/items/92dcfa6fa2a33cb11442