DUICUO

Ansibleを使用してPodmanコンテナを構成する

[[399874]]

複雑なITインフラストラクチャには、多くの反復タスクが存在します。これらのタスクを正常に実行するのは容易ではありません。失敗の多くは人為的なミスが原因です。Ansibleを使えば、これらのタスクをすべてリモートホスト経由で実行できます。アクションマニュアルプレイブックアクションマニュアルは必要に応じて再利用できます。この記事では、Fedora LinuxにAnsibleをインストールして設定する方法、そしてAnsibleを使用してPodmanコンテナを管理および設定する方法を学びます。

アンシブル

Ansibleは、Red Hatがスポンサーとなっているオープンソースのインフラストラクチャ自動化ツールです。パッケージのインストールとアップデート、バックアップ、特定のサービスの継続的な稼働確保など、大規模インフラストラクチャで発生するあらゆる問題に対処できます。これらの作業は、YAMLで記述されたアクションマニュアルを使用して行います。Ansibleのアクションマニュアルは再利用可能であるため、システム管理者の業務の複雑さを軽減します。アクションマニュアルは反復的なタスクを削減し、変更も容易です。しかし、Ansibleのような自動化ツールは数多く存在する中で、なぜAnsibleを使うのでしょうか?他の構成管理ツールとは異なり、Ansibleはエージェントレスです。管理対象ノードに何もインストールする必要はありません。

ポッドマン

Podmanは、コンテナイメージの開発、管理、実行のためのオープンソースのコンテナエンジンです。しかし、コンテナとは一体何でしょうか?新しいアプリケーションを作成し、物理サーバー、クラウドサーバー、または仮想マシンにデプロイする際に直面する最も一般的な問題の一つが、移植性と互換性です。ここでコンテナが登場します。コンテナはオペレーティングシステムレベルで仮想化されるため、必要なライブラリとアプリケーションサービスのみが含まれます。コンテナの利点は次のとおりです。

  • 携帯性
  • 分離
  • スケーラビリティ
  • 軽量
  • クイックスタート
  • ディスクとメモリの要件が小さい

つまり、あらゆるアプリケーションのコンテナイメージをビルドすると、必要な依存関係がすべてコンテナにパッケージ化されます。これにより、移植性や互換性の問題を一切抱えることなく、あらゆるホストオペレーティングシステム上でコンテナを実行できるようになります。

Podman の最大の利点は、デーモンが存在しないことです。そのため、コンテナの実行に root 権限は必要ありません。Dockerfiles を使用してコンテナイメージをビルドするか、Docker Hub、fedoraproject.org、Quay からイメージをプルできます。

Ansible を使用して Podman を構成する理由は何ですか?

Ansibleは、繰り返しタスクを複数回実行する簡単な方法を提供します。また、クラウドプロバイダー(AWS、GCP、Azureなど)、コンテナ管理ツール(Docker、Podmanなど)、データベース管理向けのモジュールも多数提供しています。Ansibleにはコミュニティ(Ansible Galaxy)もあり、豊富なAnsibleリソースを見つけることができます。役割役割これらは世界中の貢献者によって作成されました。そのため、AnsibleはDevOpsエンジニアやシステム管理者にとって貴重なツールとなっています。

DevOpsにより、アプリケーション開発は急速に進みます。重要なのは、特定のオペレーティングシステムに限定されないアプリケーションを開発できることです。ここでPodmanが役立ちます。

Ansibleをインストールする

まず、Ansible をインストールします。

  1. $ sudo dnf install ansible - y

Ansibleを設定する

Ansible では管理対象ノード上で SSH を実行する必要があるため、まず SSH を生成します。鍵ペアキーペア

  1. $ ssh - keygen

キーを生成したら、そのキーを管理対象ノードにコピーします。

yesと入力し、管理対象ノードのパスワードを入力してください。これで、管理対象ホストにリモートアクセスできるようになります。

管理対象ノードにアクセスするには、すべてのホスト名またはIPアドレスをインベントリファイルに保存する必要があります。デフォルトでは、このファイルは~/etc/ansible/hostsにあります。

これは在庫あり在庫ファイルは次のようになります。角括弧は、特定のノードにグループを割り当てるために使用されます。

  1. [ group1 ]
  2. green . example . com
  3. blue . example . com
  4. [ group2 ]
  5. 192.168 . 100.11
  6. 192.168 . 100.10

すべての管理対象ノードに到達可能かどうかを確認します。

  1. $ ansible all - m ping

次の出力が表示されます。

  1. [ mahesh@fedora new ] $ ansible all - m ping
  2. fedora . example . com I SUCCESS {
  3. "ansibe_facts" : {
  4. "discovered_interpreter_python" : "/usr/bin/python"
  5. },
  6. "changed" : false ,
  7. "ping" : "pong"
  8. }
  9. [ mahesh@fedora new ] $

今すぐ最初のものを作成してください。アクションマニュアルプレイブック管理対象ノードにPodmanをインストールします。まず、.yml拡張子を持つ任意の名前のファイルを作成します。

  1. $ vim name_of_playbook . yml

アクションマニュアルは次のようになります。最初のフィールドはアクションマニュアルの名前です。hosts hostsは、マニフェストに記載されているホスト名またはグループ名を参照するために使用されます。become become: yesはアップグレード権限を示し、 tasksには実行するタスクが含まれます。ここで、 nametasks名、 yumはパッケージをインストールするためのモジュール、 nameフィールドはパッケージ名、 stateフィールドはパッケージをインストールするか削除するかを指定します。

  1. ---
  2. - name : First playbook
  3. hosts : fedora . example . com
  4. become : yes
  5. tasks :
  6.     - name : Installing podman .
  7.         yum :
  8. name : podman
  9. state : present

ファイルに構文エラーがないか確認してください。

  1. $ ansible - playbook filename -- syntax - check

次にアクションマニュアルを実行します。

  1. $ ansible - playbook filename

次の出力が表示されます。

  1. [ mahesh@fedora new ] $ ansible - playbook podman_installation . yml
  2. PLAY [ First playbook ] *************************************************************************************************
  3. TASK [ Gathering Facts ] *************************************************************************************************
  4. 0k : [ fedora . example . com ]
  5. TASK [ Installing podman ] ************************************************************************************************
  6. changed : [ fedora . example . com ]
  7. PLAY RECAP *************************************************************************************************
  8. fedora . example . com : ok = 2 changed = 1 unreachable = 0 failed = 0 skipped = 0 rescued = 0 ignored = 0
  9. [ mahesh@fedora new ] $

次に、Docker Hubからイメージをプルするための新しいアクションマニュアルを作成します。podman_imageモジュールpodman_image使用して、バージョン番号2-alpineのhttpdイメージをDocker Hubからプルします。

  1. ---
  2. - name : Playbook for podman .
  3. hosts : fedora . example . com
  4. tasks :
  5. - name : Pull httpd : 2 - alpine image from dockerhub .
  6. podman_image :
  7. name : docker . io / httpd
  8. tag : 2 - alpine

次に、プルしたイメージを確認します。

  1. [ mahesh@fedora new ] $ podman images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. docker . io / library / httpd 2 - alpine fa848876521a 11 days ago 57 MB
  4. [ mahesh@fedora new ] $

httpdイメージを実行するための新しいアクションを作成します。詳細については、podman_containerモジュールのドキュメントを参照してください。

  1. ---
  2. - name : Playbook for podman .
  3. hosts : fedora . example . com
  4. tasks :
  5. - name : Running httpd image .
  6. containers . podman . podman_container :
  7. name : my - first - container
  8. image : docker . io / httpd : 2 - alpine
  9. state : started

コンテナの実行状態を確認します。

  1. [ mahesh@fedora new ] $ podman ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 45d966eOe207 docker . io / library / httpd : 2 - alpine httpd - foreground 13 seconds ago Up 13 seconds ago my - first - container
  4. [ mahesh@fedora new ] $

次に、実行中のコンテナを停止し、その状態をstartedからabsentに変更します。

  1. - name : Stopping httpd container .
  2. containers . podman . podman_container :
  3. name : my - first - container
  4. image : docker . io / httpd : 2 - alpine
  5. state : absent

podman psコマンドを実行すると、実行中のコンテナは表示されません。

  1. [ mahesh@fedora new ] $ podman ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. [ mahesh@fedora new ] $

podman_container 、コンテナの再作成、コンテナの再起動、コンテナの実行状況の確認など、様々な処理を実行できます。これらの操作の実行方法については、ドキュメントを参照してください。