Ad-Hocコマンドは、ターゲットホストで1つのタスクを実行するワンライナーansibleコマンドです。これにより、インベントリファイル構成で定義されたホストの1つまたはグループに対して単純な1行のタスクを実行できます。アドホックコマンドには、タスクを実行するホストのグループと実行するAnsibleモジュールの2つのパラメーターのみが含まれます。
Ad-Hocコマンドを使用すると、ansible自体を探索するための利点が増えます。サーバーの再起動、サービスの管理、回線構成の編集、1つのホストのみへのファイルのコピー、1つのパッケージのみのインストールなど、最初にプレイブックを作成しなくてもタスクを実行できます。
このチュートリアルでは、AnsibleAd-Hocコマンドの基本的な使用法を示します。アドホックコマンドを使用して、システム管理者として日常的に必要になる可能性のある簡単なタスクを実行します。
このガイドでは、2つのUbuntu18.04LTSサーバーであるBionicBeaverを使用します。 ansibleサーバーは、IPアドレス10.5.5.20のホスト名'ansible-node'を取得し、ホスト名'provision'とIPアドレス10.5.5.21のProvisionサーバーを取得します。
何をしますか?
- 基本的なアドホックコマンド
- ファイル転送
- 更新とアップグレード
- パッケージの管理
- サービスの管理
- チェックシステム
最初に、サーバーを管理するためのAnsibleAd-Hocの基本的な使用法を学習します。 Ansible Ad-Hocの基本コマンド、sshパスワード認証を伴うAd-Hocコマンドの使用、特権の昇格、およびホストのグループに対するAd-Hocコマンドの使用について学習します。
1。基本コマンド
インベントリファイル上の「すべての」ホストに対して、「ping」モジュールを使用してアドホックに実行できる基本的なコマンド。
ansible all -m ping
- インベントリファイル上のすべてのホストの最初のパラメータ「all」。
- pingモジュールを実行するモジュールの「-m」オプション内の2番目のパラメーター。
これで、次のような結果が得られます。
プロビジョニングサーバーに対するアドホックコマンドは、サーバーで変更を加えずに「SUCCESS」であり、プロビジョニングサーバーの「pong」から「ping」モジュールの結果を取得します。
2。フィルターホストグループと単一ホスト
これで、インベントリファイルですでに定義されているホストのグループに対してアドホックコマンドを使用できます。カスタムインベントリファイルを使用することも、デフォルトのインベントリファイル「/ etc / ansible/hosts」を使用することもできます。
以下は、デフォルトのインベントリ構成ファイルですでに定義されている「hakase-testing」と呼ばれるホストのグループに対してアドホックコマンドを実行する例です。
ansible hakase-testing -m setup -a "filter=ansible_distribution*"
カスタムインベントリファイルを使用している場合は、インベントリファイル名の後に「-i」オプションを追加します。
ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"
同じ結果が得られます。
これで、インベントリ構成で単一のホストに対して実行する場合は、以下のようなホストの名前を使用できます。
ansible provision -m setup -a "filter=ansible_distribution*"
また、アドホックコマンドは「プロビジョニング」サーバーでのみ実行されます。
3。 SSHパスワードの使用
次に、プロンプトが表示されたsshパスワード認証を使用してアドホックコマンドを実行します。これを行うには、「ansible-node」に「sshpass」という追加のパッケージをインストールする必要があります。
以下のaptコマンドを使用してsshpassパッケージをインストールします。
sudo apt install sshpass -y
次に、アドホックコマンドを実行し、最後に「--ask-pass」オプションを追加します。
ansible hakase-testing -m ping --ask-pass
また、サーバーの「SSHパスワード」を尋ねられます。
sshパスワードを入力すると、アドホックコマンドがサーバーに対して実行されます。
4。特権の昇格
ansibleは、サーバーに対する特権昇格の機能を提供します。 root以外のユーザーとしてアドホックコマンドを実行する場合は、「-become」オプションを使用してroot権限を取得し、「-K」オプションを使用してパスワードを要求できます。
アドホックコマンド「fdisk-l」をユーザー「hakase」として特権オプション「--become」および「-K」を指定して実行し、「SUDOパスワード」を要求します。
ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K
結果は以下のとおりです。
次に、サーバーとの間のファイル転送にアドホックコマンドを使用します。 'copy'モジュールを使用してファイルをプロビジョニングサーバーに転送し、'fetch'モジュールを使用してサーバーからファイルをダウンロードできます。
1。ホストにファイルをアップロード
この例では、アドホックコマンドを実行し、「copy」モジュールを使用して、ユーザーhakaseのsudoers構成をグループ「hakase-testing」の「/etc/sudoers.d」ディレクトリにアップロードします。
以下のアドホックコマンドを実行します。
ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K
これで、ハカセユーザーの「SUDOパスワード」を尋ねられます。パスワードを入力すると、次のような結果が得られます。
ファイルは「dest」宛先ディレクトリにアップロードされており、「changed」の結果は「true」になります。
2。ホストからファイルをダウンロード
次に、「fetch」モジュールでアドホックコマンドを使用して、プロビジョニングサーバーからローカルの「ansible-node」サーバーにファイルをダウンロードします。
構成ファイル「/etc/sudoers.d/hakase」を「provision」サーバーから「backup」というローカルディレクトリにダウンロードします。
ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'
そして、「backup」ディレクトリに「hakase-sudoers」というファイルがあります。
Ubuntuサーバーのリポジトリを更新およびアップグレードするには、aptモジュールでアドホックコマンドを使用できます。
グループhakase-testingのリポジトリを更新します。
ansible hakase-testing -m apt -a 'update_cache=yes' --become
次に、リポジトリを更新し、「upgrade=dist」オプションを使用してすべてのパッケージを最新バージョンにアップグレードします。
ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become
すべてのパッケージがアップグレードされるのを待ちます。
これは、独自のプレイブックを作成およびデバッグする場合に非常に便利です。システムに追加のパッケージをインストールする必要がある場合があるためです。したがって、このアドホックコマンドを使用すると、各サーバーにログインせずにそのパッケージを簡単にインストールできます。
1。パッケージのインストール
以下のように、aptモジュールでアドホックコマンドを使用して単一のパッケージをインストールします。
ansible hakase-testing -m apt -a 'name=nginx state=latest' --become
2。パッケージを削除
パッケージを削除し、パッケージに関連するすべての構成を削除します。
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become
3。自動削除
以下の例では、nginxパッケージを削除し、関連するすべての構成を削除してから、システム上の未使用のパッケージをすべて削除しています。
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become
このステップでは、アドホックコマンドのサービスモジュールを使用して、プロビジョニングサーバーのシステムサービスを管理します。
1。サービスを開始する
nginxサービスを開始し、起動時間に追加します。
ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become
'changed'および'enabled'の結果は'true'として取得されます。
2。サービスを再開する
サービスを再開する場合は、次のコマンドを使用できます。
ansible hakase-testing -m service -a 'name=nginx state=restarted' --become
nginxサービスが再開されました。
3。サービスを停止する
サービスを停止するには、「state」の値を「stopped」に変更します。
ansible hakase-testing -m service -a 'name=nginx state=stopped' --become
サーバーの「hakase-testing」のnginxサービスが停止しました。
次に、アドホックコマンド内で「shell」モジュールを使用します。また、Ansibleアドホックを介して単純なLinuxコマンドを使用して単純なシステム監視を行います。
まず、以下のアドホックコマンドを使用して、すべてのサーバーに「sysstat」パッケージをインストールします。
ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become
'sysstat'パッケージのインストールを待ちます。
完了すると、すべてのサーバーをチェックする準備が整います。
1。利用可能なディスク
fdiskコマンドを使用して、ルートパーティションで使用可能なディスクを確認します。
ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become
'/ dev/sda2'を独自のパスに変更します。
2。 RAMメモリ使用量
次に、「free-m」コマンドを使用してすべてのサーバーのRAMメモリ使用量を確認します。
ansible hakase-testing -m shell -a 'free -m' --become
そして、以下のような結果が表示されます。
3。 CPU使用率
mpstatコマンドを使用してすべてのサーバーのCPU使用率を確認します。
ansible hakase-testing -m shell -a 'mpstat -P ALL' --become
mpstatコマンドは「sysstat」パッケージの一部です。
4。開いているポート
アドホックコマンドでnetstatを使用して、すべてのシステムで開いているポートを確認します。
ansible hakase-testing -m shell -a 'netstat -plntu' --become
5。稼働時間
次に、各サーバーの稼働時間を確認します。
ansible hakase-testing -m shell -a 'uptime' --become