Ansible
- Ansible(1)Ansibleの概要
- Ansible(2)ファイル関連モジュール
- Ansible(3)システム管理モジュール
- Ansible(4)コマンド実行モジュール
- Ansible(5)パッケージ管理関連モジュール
blockinfile
ファイル内にテキストブロックを追加/削除する。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
path | 必須 | ファイルパス | |
block | 挿入するテキストブロック | ||
insertafter | EOF | 何の後にテキストブロックを追加するか | |
insertbefoer | 何の前にテキストブロックを追加するか | ||
marker | # {mark} ANSIBLE MANAGED BLOCK | テキストブロック前後に挿入されるマーカー | |
backup | no | バックアップファイルを作成するかどうか | |
owner | 所有者 | ||
group | グループ | ||
mode | ファイルパーミッション | ||
state | present | 実行内容 | absent, present |
Example
- name: Add mappings to /etc/hosts blockinfile: path: /etc/hosts block: | {{ item.ip }} {{ item.name }} marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item.name }}" with_items: - { name: host1, ip: 10.10.1.10 } - { name: host2, ip: 10.10.1.11 } - { name: host3, ip: 10.10.1.12 }
copy
リモートサーバへファイルをコピーする。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
src | コピー元のファイルパス | ||
remote_src | no | コピー元のファイルパスがリモートサーバのパスであるかどうか | |
backup | no | バックアップファイルを作成するかどうか | |
owner | 所有者 | ||
group | グループ | ||
mode | ファイルパーミッション |
Example
- name: example copying file with owner and permissions copy: src: /srv/myfiles/foo.conf dest: /etc/foo.conf owner: foo group: foo mode: 0644
file
ファイル属性を変更する。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
path | コピー元のファイルパス | ||
owner | 所有者 | ||
group | グループ | ||
mode | ファイルパーミッション | ||
state | file | ファイルの状態 | absent, directory, file, hard, link, touch |
Example
# change file ownership, group and mode - file: path: /etc/foo.conf owner: foo group: foo # when specifying mode using octal numbers, add a leading 0 mode: 0644
get_url
ファイルのダウンロードを行う。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
url | 必須 | ファイルのURL | |
dest | 必須 | ダウンロードしたファイルを設置するディレクトリの絶対パス | |
timeout | 10 | タイムアウト | |
force | no | 既にファイルが存在していたとしても毎回ダウンロードを行うかどうか | |
insertbefoer | 何の前にテキストブロックを追加するか | ||
backup | no | バックアップファイルを作成するかどうか | |
owner | 所有者 | ||
group | グループ | ||
mode | ファイルパーミッション |
Example
- name: Download foo.conf get_url: url: https://example.com/path/file.conf dest: /etc/foo.conf mode: 0440
git
gitプロジェクトをデプロイする。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
dest | 必須 | gitプロジェクトのチェックアウト先 | |
repo | 必須 | gitリポジトリ |
Example
# Example git checkout from Ansible Playbooks - git: repo: 'https://foosball.example.org/path/to/repo.git' dest: /srv/checkout version: release-0.22
lineinfile
ファイル内にテキスト行を追加/削除する。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
path | 必須 | ファイルパス | |
line | 挿入するテキスト | ||
insertafter | EOF | 何の後にテキストブロックを追加するか | |
insertbefoer | 何の前にテキストブロックを追加するか | ||
backup | no | バックアップファイルを作成するかどうか | |
owner | 所有者 | ||
group | グループ | ||
mode | ファイルパーミッション | ||
state | present | 実行内容 | absent, present |
Example
# Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path' - lineinfile: path: /etc/selinux/config regexp: '^SELINUX=' line: 'SELINUX=enforcing'
replace
特定の文字列を置換する。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
path | 必須 | ファイル名 | |
regexp | 必須 | 対象文字列の正規表現 | |
replace | 変換後の文字列 | ||
backup | no | バックアップファイルを作成するかどうか | |
owner | 所有者 | ||
group | グループ | ||
mode | ファイルパーミッション |
Example
- replace: path: /etc/hosts regexp: '(\s+)old\.host\.name(\s+.*)?$' replace: '\1new.host.name\2' backup: yes
template
テンプレートファイルをリモートサーバに設置する。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
src | 必須 | Playbook上のテンプレートファイルの名前 | |
dest | 必須 | リモートサーバ上のパス | |
backup | no | バックアップファイルを作成するかどうか | |
owner | 所有者 | ||
group | グループ | ||
mode | ファイルパーミッション |
Example
- template: src: /mytemplates/foo.j2 dest: /etc/file.conf owner: bin group: wheel mode: 0644
unarchive
アーカイブを展開する。
変数 | デフォルト | 内容 | 備考 |
---|---|---|---|
src | 必須 | 展開するアーカイブのパス | |
remote_src | no | 展開するアーカイブがリモートサーバにあるかどうか | |
dest | 必須 | リモートサーバ上のパス | |
owner | 所有者 | ||
group | グループ | ||
mode | ファイルパーミッション |
Example
- name: Unarchive a file that is already on the remote machine unarchive: src: /tmp/foo.zip dest: /usr/local/bin remote_src: yes