DevopsのためのAnsibleインタビューの質問と回答

このガイドでは、DevOpsエンジニア向けのAnsibleインタビューの質問と回答を見ていきます。 これは、Ansible Devopsインタビューの準備を支援し、スキルを確認することを目的としています。 過去1年間、Ansibleの採用は大規模でした。 これは現在、単一サーバーからマルチサーバークラスターに至るまでのインフラストラクチャでのソフトウェアプロビジョニング、構成管理、およびアプリケーション展開を自動化するために最も使用されているソフトウェアの1つです。

このガイドを読んでいる場合は、Ansibleの基本をすでに理解していると思います。Ansibleの仕組み、要件、およびPuppetやChefなどの同様のツールに対する利点…

1)Ansibleとは何ですか?

Ansibleは、Pythonで記述されたオープンソースのIT自動化ツールであり、現在はRedhatを利用しています。 システムのプロビジョニング、ソフトウェアの展開、システムの構成、およびダウンタイムなしの継続的な展開などの高度なITタスクの調整を行うことができます。

2)他の自動化ツールに対するAnsibleの利点は何ですか?

  • Ansibleはエージェントレスです-ターゲットマシンでSSHサービスを起動する必要があるだけです
  • 必要な依存関係はPythonだけです。 ほとんどのシステムにはPythonがプリインストールされています
  • オーバーヘッドが少ない-リソース使用率が最小限
  • AnsibleタスクはYAML構文で記述されています-習得と理解が簡単
  • Ansibleは宣言型です-ほとんどが手続き型である他のツールとは異なります。 目的の状態を定義するだけで、Ansibleはその状態に到達するための要件を満たします

3)Ansibleをインストールするために利用できるオプションはどれですか?

  • 配布パッケージリポジトリからインストールする
  • ソースコードからビルド
  • pipなどのPythonパッケージ管理ツールを使用してインストールします

4)Ansibleの仕組みを説明してください。

Ansibleは、ノードと制御マシンで構成されています。
Ansibleは制御マシンにインストールされ、ノードはダウンタイムなしでSSHによってこの制御マシン内で管理されます。 ノードの場所は、インベントリを介してマシンを制御することによって指定されます。
AnsibleはSSHプロトコルを使用してモジュールをノードにデプロイします。これらのモジュールはリモートノードに一時的にのみ保存され、標準出力を介したJSON接続を介してAnsibleマシンと通信します。

5)Ansibleの実用的な使用法の1つを説明してください。

Ansibleは、ITインフラストラクチャを管理し、ソフトウェアアプリをリモートノードにデプロイするために使用されます。
Ansibleを使用すると、1つのコマンドを使用して多くのソフトウェアアプリケーションを多くのノードにデプロイできます。 1つのコマンドを使用して1つ以上のアプリケーションを100を超えるノードにデプロイしたいとします。これは、Ansibleが支援できることです。
パッケージzlibとvimをすべてのマシンにインストールする方法は次のとおりです。

- hosts: all
vars:
package_list:
- 'zlib'
- 'vim'
tasks:
- name: Install zlib and vim
become: "yes"
package:
name:"{{ package_list }}"
state: present

6)Ansibleでパスワードをどのように保護しますか?

AnsibleにはVaultと呼ばれる機能があり、パスワードやキーなどの機密データを、プレイブックやロールのプレーンテキストとしてではなく、暗号化されたファイルに保持できます。 ファイルの編集に使用されるansible-vaultと呼ばれるコマンドラインツールがあります。 このコマンドラインツールで使用される一般的なフラグは、-ask-vault-passまたは–vault-password-fileです。 ボールトで暗号化されたデータファイルを含むプレイブックを実行するには、2つのフラグのいずれかを渡す必要があります。

7)Ansible Inventoryとは何ですか?

Ansibleのデフォルトファイルは/ etc / ansible / hostsにあり、ターゲットシステムのIPアドレスまたはホスト名が含まれています。
を使用して別のインベントリファイルを指定できます -i <パス> コマンドラインのオプション。 Ansibleは、このファイルから作業するホストの一部を選択します。 ファイル形式はINIまたはYAMLにすることができ、デフォルトはINIに似ています。 INI形式では、括弧内の見出しはグループ名であり、システムを分類し、どのシステムをいつ、どのような目的で制御するかを決定するために使用されます。 例えば

[db-servers]
192.168.10.4
192.168.10.5

[app-servers]

10.1.5.4 10.1.5.5

ホスト変数とグループ変数は、インベントリファイルで定義できます。 後でプレイブックで使用されるホストに変数を割り当てるのは簡単です。

[web-servers:vars]
ntp_server=ntp.server.com
proxy=proxy.server.com

8)Ansible Playbookとは何ですか?

Ansible Playbookは、Ansibleのすべてのユースケースの構成要素です。 さまざまなYAMLタグは、宣言、変数、タスク、ハンドラーと呼ばれる4つのタイプに分類されます。
プレイブックは、複数のタスクを実行できるコマンドのセットであり、YAMLファイル形式で記述されています。

9)ホストに定義されているインベントリ変数を確認する方法は何ですか?

次のコマンドを使用して、インベントリを確認します。

$ ansible -m debug -a "var=hostvars['hostname']" localhost

10)Ansible Towerとは何ですか?

Ansible Towerは、あらゆる種類のITチームがAnsibleをさらに使いやすくするWebベースのソリューションです。 これは、すべての自動化タスクのハブとなるように設計されています。 タワーは最大10ノードまで無料で使用できます。

11)Ansibleの役割とは何ですか?

Ansibleの役割は、自動化コンテンツをバンドルして再利用できるようにする方法です。
Ansibleロールを作成する最初のステップは、そのディレクトリ構造を作成することです。 基本ディレクトリ構造を作成するには、AnsibleGalaxyと呼ばれるAnsibleにバンドルされているツールを使用します。
このコマンドは、linoxide.packerディレクトリを作成します。

$ ansible-galaxy init linoxide.packer
- linoxide.packer was created successfully

これは、linoxide.packerディレクトリ内に作成されたディレクトリ構造です。

$ ls
README.md files meta templates vars
defaults handlers tasks tests

12)Ansible Galaxyとは何ですか?

Ansible galaxyは、ベースディレクトリ構造を作成するために使用されるAnsibleにバンドルされているツールです。 Ansibleコマンドを使用して、Ansibleは構成されたクライアントと通信します。 ansible-playbookコマンドを使用して実行されるプレイブックを使用して、構成を自動化できます。

13)Ansibleモジュールの種類を説明してください。

Ansibleのモジュールはべき等です。 RESTfulサービスの観点から、操作をべき等にするために、クライアントはAnsibleのモジュールを使用して同じ結果を実行できます。 複数の同一のリクエストが1つのリクエストになります。
Ansible内に独自のモジュールを作成することもできます。
Pythonでコーディングする方法を知っている場合は、最初から数時間で独自のモジュールの作成を開始でき、同じことについての予備知識は必要ありません。

Ansibleには2つの異なるタイプのモジュールがあります。

a)コアモジュール
b)エクストラモジュール

コアモジュール:

Ansibleチームはこれらのタイプのモジュールを維持しており、常にAnsibleソフトウェアとともに出荷されます。 また、これらのモジュールは、「エクストラ」リポジトリのモジュールよりも優先されます。

エクストラモジュール:

これらのモジュールは現在Ansibleにバンドルされていますが、将来は個別に利用できるようになる可能性があります。 それらはまた、ほとんどがAnsibleコミュニティによって維持されています。

14)Ansibleの事実を説明する

ansibleファクトは、ansibleがホストに関する情報を取得し、それらを変数に格納して簡単にアクセスできるようにする方法と考えることができます。 事前定義された変数に格納されているこの情報は、プレイブックで使用できます。 ファクトを生成するために、ansibleはセットアップモジュールを実行します。

$ ansible- m setup hostname

このステートメントが実行されると、その特定のホストで利用可能なすべてのファクトの辞書が出力されます。 これは、Ansible_variablesのリストにアクセスするための最良の方法です。

あなたは以下を介してすべての事実を見ることができます:

$ ansible all- m setup

したがって、情報の特定の部分のみを抽出する場合は、「セットアップ」モジュールを使用して、出力をフィルターで除外し、必要な事実を把握することができます。

15)アドホックコマンドとは何ですか?

アドホックコマンドは、新しいプレイブックを作成しなくても、ノードでアクションを実行するために使用できる方法です。 必要に応じて、特定のグループ内のすべてのホストを再起動するとします。新しいプレイブックを作成するか、1回限りのアドホックコマンドを実行することができます。

$ ansible servers -a "/sbin/reboot"

16)シェル環境変数にどのようにアクセスしますか?

制御マシンの既存の変数へのアクセスは、「env」ルックアッププラグインを使用して行われます。
にとって example:
管理マシンのホーム環境変数の値へのアクセス:

local_home:”{{lookup(‘env’,’HOME’)}}”

17)ディレクトリ ‘/ tmp / linoxide’を作成するタスクを作成します

ノード上に新しいディレクトリを作成するには、次のようにします。

- name: Create a new directory
file:
path: "/tmp/linoxide"
state: directory

18)Ansibleベースのプロジェクトをどのようにテストできますか?

Ansibleプロジェクトをテストする方法はいくつかあります。

手動実行: プレイを実行して、システムが目的の状態にあるかどうかを確認するだけです。これは最も簡単で怠惰な方法ですが、テスト環境と本番環境の結果が同じでない可能性があるため、潜在的に危険な場合もあります。

チェックモード: チェックモードは、シミュレーションなしで実行されたかのように実行されたすべてのことを報告するため、Ansibleプロジェクトをテストするための良い方法です。 そのため、Ansibleの実行動作が希望どおりであるかどうかを簡単に確認できます。 ただし、チェックモードでは、役割やプレイブックで使用されるスクリプトやコマンドは実行されません。 それらを実行するには、「check_mode:no」を使用して特定のタスクのチェックモードを無効にする必要があります。

アサート: テストの方法としてのアサーションは、Pythonなどの他の言語でのテスト方法にも似ているため、優れています。さらに重要なことに、チェックモードのようなシミュレーションとしてではなく、実際の検証として、システムが目的の状態に到達したことを確認します。タスクが特定のリソースを目的の状態に変更したこと。

MoleculeやTestKitchenなどのAnsibleテストツールもチェックできます。

19)Red Hat Ansibleとは何ですか?

RedHatのAnsibleとAnsibleTowerはどちらも、次の機能を提供できるエンドツーエンドの完全な自動化プラットフォームです。

    • 1.プロビジョニング
      2.アプリケーションのデプロイ
      3.ワークフローの調整
      4.ITシステムを管理する
      5.ITシステムの構成
      6.ネットワーク
      7.アプリケーション

20)継続的デリバリーとは何ですか?

継続的デリバリーとは、ソフトウェアに変更が加えられるとすぐにソフトウェアをデリバリーすることです。 この方法を使用するには、GitHubやGitLabなどのバージョン管理システムを使用する必要があります。 ソフトウェアは、ライブプロダクションシステムで常に更新されます。

うまくいけば、これで、ある会社でのAnsibleDevOpsエンジニアのポジションインタビューの準備が整いました。 このポジションは最近非常に人気があり、企業は常に新しいDevOpsエンジニアを探しています。 AnsibleとDevOpsの分野に飛び込みたいと思っているすべての人に幸運を祈ります。

また読む:

  • 30予想されるDevOpsインタビューの質問と回答