tinyblargon.docker_deploy
Ansible ロール: Docker デプロイ
Docker Compose スタック(ファイル)をデプロイするための Ansible ロールです。
要件
ローカルシステム
rsync
デプロイ先システム
docker-ce
docker-ce-cli
containerd.io
docker-compose-plugin
またはdocker-compose
ロール変数
変数名 | タイプ | デフォルト値 | 説明 |
---|---|---|---|
docker_deploy_source: | 文字列 | "docker-deploy" | Docker デプロイメントと Compose ファイルが含まれるローカルディレクトリ。このディレクトリはメインプレイブックのディレクトリに対して相対的です。 |
docker_deploy_destination: | 文字列 | "/opt/docker-deploy" | デプロイメントがクローンされる宛先フォルダ。 |
docker_deploy_compose_file: | 文字列 | "docker-compose.yml" | 起動する Docker Compose ファイルの名前。 |
docker_deploy_files: | リスト(地図) | [] | docker_deploy_destination: にコピーされるファイルのリスト。詳細は次の章 Docker_deploy_files にあります。 |
docker_deploy_compatibility: | ブール | true | Compose ファイルを起動する際に --compatibility フラグを有効にします。 |
docker_deploy_remove_orphans: | ブール | true | Compose ファイルを起動する際に --remove-orphans フラグを有効にします。 |
docker_deploy_build: | ブール | false | docker_deploy_source: または docker_deploy_files: のいずれかのファイルが変更された場合に --build フラグを有効にします。 |
docker_deploy_recreate: | ブール | false | docker_deploy_source: または docker_deploy_files: のいずれかのファイルが変更された場合に --force-recreate フラグを有効にします。 |
docker_deploy_compose_plugin: | ブール | true | docker compose または docker-compose コマンドを使用するか指定します。 true は docker compose 、false は docker-compose を指します。 |
docker_deploy_prune: | リスト | ["image"] | Compose デプロイメントに変更が加えられた後に実行されるプルーンコマンド。値は "builder" , "container" , "image" , "network" , "system" , "volume" のいずれかの組み合わせにできます。 |
docker_deploy_state: | 文字列 | "present" | "present" の場合、docker_deploy_source: が docker_deploy_destination: に同期され、docker_deploy_compose_file: が起動されます。 "absent" の場合、docker_deploy_destination: 内の docker_deploy_compose_file: が停止されます。 |
docker_deploy_rsync_opts: | リスト | ['--exclude="*.example"'] | 追加の rsync オプションを配列で指定します。 docker_deploy_files: に指定されたすべての dest は自動的に rsync から除外されます。 |
docker_deploy_show_warnings: | ブール | true | Docker Compose の警告を表示します。 |
docker_deploy_absent_volume: | ブール | false | docker_deploy_state: が "absent" の場合のみ適用されます。Compose ファイルを停止する際に --volumes フラグを有効にし、Compose ファイルに指定されたすべてのボリュームを削除します。 |
docker_deploy_absent_remove: | ブール | false | docker_deploy_state: が "absent" の場合のみ適用されます。true の場合、docker_deploy_destination: が削除されます。 |
Docker_deploy_files
変数名 | タイプ | デフォルト値 | 説明 |
---|---|---|---|
content: | 文字列 | "" | src の代わりに使用する場合、ファイルの内容を直接指定された値に設定します。dest がファイルのときのみ機能します。存在しない場合はファイルが作成されます。 |
dest: | 文字列 | ファイルがコピーされる docker_deploy_destination: に対するリモートパス。src がディレクトリの場合、これもディレクトリである必要があります。dest が存在しないパスで、dest が “/” で終わる、または src がディレクトリの場合、dest は作成されます。相対パスの場合、開始ディレクトリはリモートホストによって決定されます。src と dest がファイルの場合、dest の親ディレクトリは作成されず、存在しない場合はタスクが失敗します。すべての dest は自動的に rsync から除外されます。 |
|
group: | 文字列 | "root" | ファイルシステムオブジェクトが属するグループ名。 |
mode: | 文字列 | 宛先ファイルまたはディレクトリのパーミッション。 詳細はAnsibleドキュメントを参照してください。 | |
owner: | 文字列 | "root" | ファイルシステムオブジェクトの所有者名。数値のユーザー名を指定するとユーザーIDと見なされるので、混乱を避けるために数値のユーザー名は避けてください。 |
src: | 文字列 | リモートサーバにコピーするファイルのローカルパス。絶対パスまたは相対パスが使用可能です。パスがディレクトリの場合は再帰的にコピーされます。パスが “/” で終わる場合、そのディレクトリ内の内容のみがデスティネーションにコピーされます。そうでない場合は、ディレクトリ全体とその内容がコピーされます。この挙動は rsync コマンドラインツールに似ています。 | |
no_log: | ブール | false | true の場合、内容はログに記録されません。 |
content:
と src:
の両方が未指定の場合、宛先に空のファイルが作成されます。
例 プレイブック
Present(存在)
- hosts: all
roles:
- role: tinyblargon.docker_deploy
vars:
docker_deploy_source: "docker-deploy"
docker_deploy_destination: "/opt/docker-deploy"
docker_deploy_compose_file: "docker-compose.yml"
docker_deploy_files:
- dest: ".env"
src: ".env"
- dest: ".secrets/password.txt"
content: "{{ lookup('file', 'password.txt') }}"
owner: "root"
group: "root"
mode: "0600"
no_log: true
docker_deploy_compatibility: true
docker_deploy_remove_orphans: true
docker_deploy_recreate: true
docker_deploy_compose_plugin: false
docker_deploy_prune: ["system"]
docker_deploy_state: "present"
Absent(不在)
- hosts: all
roles:
- role: tinyblargon.docker_deploy
vars:
docker_deploy_destination: "/opt/docker-deploy"
docker_deploy_compose_file: "docker-compose.yml"
docker_deploy_compose_plugin: false
docker_deploy_prune: ["system", "volume"]
docker_deploy_state: "absent"
docker_deploy_absent_volume: true
docker_deploy_absent_remove: true
ライセンス
MIT