【Ansible】Adhocコマンドの実行方法


Ansibleは自動化を行うためには基本「Playbook」を作成しないといけません。

しかし、シンプルなコマンドなどで確認する際、いちいち「Playbook」を作成するのは面倒くさいですし、大変です

そこで、Ansibleには、この様な時に便利な機能として「Adhocコマンド」があります。
この「Adhocコマンド」は特定の「モジュール」と「パラメータ」を指定して簡単な処理を実行することができます。


シンプルな操作を実行させる「Adhocコマンド」の使い方

「Adhocコマンド」はコマンド形式で以下の様な簡単な処理を実行することができます。

以下は「Adhocコマンド」の形式となります。

$ ansible [pattern] -m [module] -a "[module options]"

以下は、代表的なAnsibleコマンドの実行例となります。
localhostへ接続し、「ping」コマンドを実行した結果が表示されます。

$ ansible localhost -m ping
localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
$ 

これは、Ansibleが操作する対象ホストである「localhost」へ接続し、正常にpingモジュールを実行した結果となります。

「shellモジュール」を指定したAdhocコマンド実行例

上記の様なPingモジュール意外にも「shellモジュール」を指定すると実際の機器のコマンドを実行することも可能です。

バージョン確認

$ ansible localhost -m shell  -a "cat /etc/redhat-release"
localhost | CHANGED | rc=0 >>
CentOS Linux release 8.2.2004 (Core) 
$ 

ホスト名確認

$ ansible localhost  -m shell -a hostname
localhost | CHANGED | rc=0 >>
test.local
$ 


「yumコマンド」を指定したAdhocコマンド実行例

Adhocコマンドは、パッケージインストールを実行する「yum」コマンドを実行することも可能です。
以下は、yumコマンドを使用した実行例となります。

最新の「vim」パッケージをyumインストールする

$ ansible localhost -m yum -a "name=vim state=present"
localhost | CHANGED => {
    "ansible_facts": {
        "pkg_mgr": "dnf"
    },
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Installed: vim-filesystem-2:8.0.1763-13.el8.noarch",
        "Installed: gpm-libs-1.20.7-15.el8.x86_64",
        "Installed: vim-common-2:8.0.1763-13.el8.x86_64",
        "Installed: vim-enhanced-2:8.0.1763-13.el8.x86_64"
    ]
}
$ 

パッケージが最新バージョンかを確認

$ ansible localhost -m yum -a "name=vim state=latest"
localhost | SUCCESS => {
    "ansible_facts": {
        "pkg_mgr": "dnf"
    },
    "changed": false,
    "msg": "Nothing to do",
    "rc": 0,
    "results": []
}
$ 

機器再起動

Adhocコマンドはサーバー上で実行できる事はなんでも可能です。
再起動も簡単に以下の様なコマンドで実行することが可能です。

$ ansible localhost -a "/sbin/reboot"
localhost | CHANGED | rc=0 >>

Connection to localhost closed by remote host.
Connection to localhost closed.
$ 

以上がAnsibleで実行できる「Adhocコマンド」の実行例となります。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!