|
[[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は、繰り返しタスクを複数回実行する簡単な方法を提供します。また、クラウドプロバイダー(AWS、GCP、Azureなど)、コンテナ管理ツール(Docker、Podmanなど)、データベース管理向けのモジュールも多数提供しています。Ansibleにはコミュニティ(Ansible Galaxy)もあり、豊富なAnsibleリソースを見つけることができます。役割これらは世界中の貢献者によって作成されました。そのため、AnsibleはDevOpsエンジニアやシステム管理者にとって貴重なツールとなっています。 DevOpsにより、アプリケーション開発は急速に進みます。重要なのは、特定のオペレーティングシステムに限定されないアプリケーションを開発できることです。ここでPodmanが役立ちます。 まず、Ansible をインストールします。 -
$ sudo dnf install ansible - y
Ansible では管理対象ノード上で SSH を実行する必要があるため、まず SSH を生成します。鍵ペア。 -
$ ssh - keygen
キーを生成したら、そのキーを管理対象ノードにコピーします。 yesと入力し、管理対象ノードのパスワードを入力してください。これで、管理対象ホストにリモートアクセスできるようになります。 管理対象ノードにアクセスするには、すべてのホスト名またはIPアドレスをインベントリファイルに保存する必要があります。デフォルトでは、このファイルは~/etc/ansible/hostsにあります。 これは在庫ありファイルは次のようになります。角括弧は、特定のノードにグループを割り当てるために使用されます。 -
[ group1 ] -
green . example . com -
blue . example . com -
[ group2 ] -
192.168 . 100.11 -
192.168 . 100.10
すべての管理対象ノードに到達可能かどうかを確認します。 -
$ ansible all - m ping
次の出力が表示されます。 -
[ mahesh@fedora new ] $ ansible all - m ping -
fedora . example . com I SUCCESS { "ansibe_facts" : { "discovered_interpreter_python" : "/usr/bin/python" }, "changed" : false , "ping" : "pong"-
} -
[ mahesh@fedora new ] $
今すぐ最初のものを作成してください。アクションマニュアル管理対象ノードにPodmanをインストールします。まず、.yml拡張子を持つ任意の名前のファイルを作成します。 -
$ vim name_of_playbook . yml
アクションマニュアルは次のようになります。最初のフィールドはアクションマニュアルの名前です。hosts hostsは、マニフェストに記載されているホスト名またはグループ名を参照するために使用されます。become become: yesはアップグレード権限を示し、 tasksには実行するタスクが含まれます。ここで、 nameはtasks名、 yumはパッケージをインストールするためのモジュール、 nameフィールドはパッケージ名、 stateフィールドはパッケージをインストールするか削除するかを指定します。 -
--- - name : First playbook hosts : fedora . example . com become : yes tasks :-
- name : Installing podman . -
yum : name : podman state : present
ファイルに構文エラーがないか確認してください。 -
$ ansible - playbook filename -- syntax - check
次にアクションマニュアルを実行します。 -
$ ansible - playbook filename
次の出力が表示されます。 -
[ mahesh@fedora new ] $ ansible - playbook podman_installation . yml -
PLAY [ First playbook ] ************************************************************************************************* -
TASK [ Gathering Facts ] ************************************************************************************************* -
0k : [ fedora . example . com ] -
TASK [ Installing podman ] ************************************************************************************************ -
changed : [ fedora . example . com ] -
PLAY RECAP ************************************************************************************************* -
fedora . example . com : ok = 2 changed = 1 unreachable = 0 failed = 0 skipped = 0 rescued = 0 ignored = 0 -
[ mahesh@fedora new ] $
次に、Docker Hubからイメージをプルするための新しいアクションマニュアルを作成します。podman_imageモジュールpodman_image使用して、バージョン番号2-alpineのhttpdイメージをDocker Hubからプルします。 -
--- - name : Playbook for podman . hosts : fedora . example . com tasks : - name : Pull httpd : 2 - alpine image from dockerhub . podman_image : name : docker . io / httpd tag : 2 - alpine
次に、プルしたイメージを確認します。 -
[ mahesh@fedora new ] $ podman images -
REPOSITORY TAG IMAGE ID CREATED SIZE -
docker . io / library / httpd 2 - alpine fa848876521a 11 days ago 57 MB -
[ mahesh@fedora new ] $
httpdイメージを実行するための新しいアクションを作成します。詳細については、podman_containerモジュールのドキュメントを参照してください。 -
--- - name : Playbook for podman . hosts : fedora . example . com tasks : - name : Running httpd image . containers . podman . podman_container : name : my - first - container image : docker . io / httpd : 2 - alpine state : started
コンテナの実行状態を確認します。 -
[ mahesh@fedora new ] $ podman ps -
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -
45d966eOe207 docker . io / library / httpd : 2 - alpine httpd - foreground 13 seconds ago Up 13 seconds ago my - first - container -
[ mahesh@fedora new ] $
次に、実行中のコンテナを停止し、その状態をstartedからabsentに変更します。 -
- name : Stopping httpd container . containers . podman . podman_container : name : my - first - container image : docker . io / httpd : 2 - alpine state : absent
podman psコマンドを実行すると、実行中のコンテナは表示されません。 -
[ mahesh@fedora new ] $ podman ps -
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -
[ mahesh@fedora new ] $
podman_container 、コンテナの再作成、コンテナの再起動、コンテナの実行状況の確認など、様々な処理を実行できます。これらの操作の実行方法については、ドキュメントを参照してください。 |