Ansible †


meta: playbookの中断、終了等の制御 †


sudoersの編集 †


python2.6/3.5等の古い環境向けにansible指定バージョンをインストール †


GitHub Actionsでansible playbookの実行 †

記事:


fail:の代わりにdebug:を使ってメッセージを見やすく表示する †


csv/tsvファイルを読み込んで処理 †

    - name: read tsv
      read_csv:
        path: "{{ tsv_path }}"
        delimiter: "\t"
      register: lines
      delegate_to: localhost


    - name: output tsv with filter
      debug:
        var: item
      when:
        item['colum 1'] != ""
      with_items: "{{ lines.list }}"

ansibleの出力をjsonにして、jq等で加工 †


collection: playbook, role, module, pluginを含む †

moduleとの違い

よく使うcollection

記事:


warningを表示する †


async, poll: 非同期実行、ポーリング †


Mitogen for Ansible: 最大25倍高速化 †


slurp: remoteにあるファイルを読む †


デバッグ方法 †


実行結果をログに残す †


synchronize: rsyncで高速にファイルコピー †


copy moduleのcontentで改行が消える。 †


コマンドの存在チェック †


ネットワーク機器の管理 †

記事:


terraform.tfstateの値を参照 †


default値を定義する †


トレーニング/サンプル †


デフォルトの検索パス †


vars_prompt, vars_files, --extra-vars で配列等を渡す †


構文チェック †


patch: パッチを適用する †


WSL環境 †


parse_cli/parse_cli_textfsm: コマンドの結果を解析して変数に取り込む †

JSONで出力できないコマンドの結果を解析して、変数に変換してくれる。
解析用テンプレートを用意するが、メジャーな機器用のテンプレートは既にある。


package: OS毎のパッケージ管理を一元化 †


run_once: ホストが複数台あっても1回しか実行しない †


ini_file: iniファイルの書き換え †


Terraformとの連携 †

Memo/TerraformでAWS EC2を起動して、ansible-playbookを実行したい時など。


apt: Debian/Ubuntu等のパッケージ管理 †

  apt:
    name: "{{ apt_packages  }}"
    state: "{{ item.state }}"
    update_cache: yes
    cache_valid_time: 3600

vars_promptでカンマ区切り文字列を配列に展開する †


includeの代わりにimport_tasks, include_tasksを使う †

[DEPRECATION WARNING]: The use of 'include' for tasks has been deprecated. Use 'import_tasks' for static inclusions or 'include_tasks' for 
dynamic inclusions. This feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False 
in ansible.cfg.

Including and Importing — Ansible Documentation


pause: 指定した秒/分だけ待つ、中断や続行を選択 †


yum_repository: yumリポジトリの追加/削除 †

- name: Remove repository from a specific repo file
  yum_repository:
    name: epel
    file: external_repos
    state: absent

include_role: role内の別taskをloadする †

tasks/main.yml とは別のyamlをloadできる。 tasksを分割して、普段は実行されない処理を分けられる。


テキストの置換 †


ansible-container: docker imageの作成 †


dockerの操作 †


以下古いversion用:


reboot: playbook中に再起動 †


block: 複数のタスクのブロック化 †


group_by: 動的にgroupを変更する †

例えば「connection: local」だが、複数の「group_vars/env.yml」を環境毎に切り替えたい時に使える。
指定したgroup_vars内の変数が参照できるようになる。


assemble: 複数の設定ファイルから一つの設定を作る †

assemble - Assembles a configuration file from fragments ― Ansible Documentation


uri: HTTPリクエストの送信 †


jenkinsからansibleの実行 †


no_log: ログを出力しない †

「-v」オプションを付けたときにもパスワード等はコンソールに表示したくない場合等。

  vars:
    - show_log: false
  tasks:
    - debug: msg="{{ item }}"
      with_items: "{{ huge_var }}"
      no_log: "{{ not show_log|bool }}"

fetch: リモートファイルをローカルにコピー †


expect: 対話処理の自動化 †


wait_for: 処理が完了するまで待機する †


localにあるrpmファイルをインストールする †


既存ファイルを空(サイズ0)にする †


空ファイルの作成 †

SSHのログからアクセスIPを列挙する †


インストール済みパッケージ一覧 †

yumモジュールではインストール済み一覧は取得できるが、一部のパッケージだけは指定できない。(nameとlistが排他指定)


ssh公開鍵の登録 †


現在のnameserverを取得 †

/etc/resolv.confのnameserverの値を参照したい。


Ansible2.0 †


Prompts: ユーザ入力を待つ †


任意のsshオプションつけて実行 †

ansible.cfg内で「ssh_args = 」で任意のオプションを指定できる。
デフォルトのオプションは上書きされるため、デフォルトのオプション+追加のオプションと書いた方が良さそう。
環境変数に ANSIBLE_SSH_ARGS があると、ansible.cfgよりも優先される。


拡張子を除いたファイル名の取得 †


tarball をインストールする †


registerの結果を使って複数回ループする †


1.9からsudoが必要な時はbecomeを使う †

root権限が必要な場合、1.9から「become: yes」が推奨。
「sudo: true」は非推奨になった。


長い行を改行する †


パフォーマンスチューニング †


validate:設定ファイル等の検証してから更新 †


yum groupinstall相当 †


Extras Modulesを使う †


sshで繋がずlocalで実行 †


パッケージがインストール済みかのチェック †


変更扱いにしない †


handlers †


roles †


開発 †


依存関係 †


自作モジュール †

Developing Modules — Ansible Documentation


環境変数の指定 †


shell:/command: コマンドの実行 †


shell:やcommand:内で複雑な処理 †



shell:中でreadコマンドがあっても待機しない †


SELinux †

target uses selinux but python bindings (libselinux-python) aren't installed! †


split: 文字列の分割 †


--check時に挙動を変更する †

以下のように、shell: の結果を元に判定するような場合、「--check」では、チェックtaskが実行されないため、エラーとなるのを回避する。


ansible-playbookオプション †


ファイル/ディレクトリのコピー †


実行順序 †


Module モジュール †


file †


Conditionals: 条件分岐 †


not inがうまく動作しない場合 †


Error Handling エラーハンドリング †


新規ファイルを作る †


特定ユーザだけリモートsshからsudoできるように †

デフォルトではttyなしのsshでは、sudoできないように設定されている場合が多い。


ping moduleで接続テスト †


多段ssh環境で実行 †

接続にsshを使うようにし、ssh側で多段設定をする。
ホストの接続には名前を使う。DNSは付けなくても良い。


複数サーバのrpmバージョンの調査と更新 †


YAML中でコロン(:)を入れると Syntax Error †

YAML中で"foo: bar"の文字列だとSyntax Errorが発生する。"foo:bar"は問題ない。


debug : デバッグメッセージの出力 †


tags : タグを付けて実行するタスクを指定する †


特別なタグ †

例えばpre_task:でチェック処理をしている場合、-t でタグ指定した場合実行されない。


Inventory ファイル †


ホストを指定して実行 †


IPアドレスに名前を付ける †

vim hosts.ini
----
[web]
web01 ansible_ssh_host=192.168.61.101
----

ansible -i hosts.ini -m ping web01

グループ毎に異なる変数を使う †


ホストのグループ化 †


実行条件を指定する †


特定行のコメントアウト †


添付ファイル: fileaws.ec2.list-instance.zip 2732件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2026-07-06 (月) 18:32:14