本文へジャンプします。

ニフティクラウド ユーザーガイド

Automation:CLIの使い方

Automationで起動したサーバーにインストールされるエージェントには、コマンドラインインタフェース(CLI)が付属しています。

SSHでサーバーへログインすれば、CLIを利用して下記の操作を行うことができます。

  • Chefログの閲覧
  • Automationが発行したコマンドJSONの閲覧
  • 手動によるChefレシピの実行
  • サーバーに関する情報の閲覧
  • エージェントに関する情報の閲覧
  • 最新のコマンドJSONからのスタックの概要表示
  • ※エージェントCLIのコマンドは、rootユーザーのみが実行できます。

基本的なコマンドの呼び出し方法

基本的なコマンドの呼び出し方法は、下記の通りです。

automation-agent-cli [--help] [command [activity] [date]]

コマンドの引数は、下記の通りです。

--help 省略可 利用可能なコマンドの一覧を表示します。
command 省略可

エージェントCLIのコマンドです。下記のいずれかを指定します。

  • agent_report
  • get_json
  • instance_report
  • list_commands
  • run_command
  • show_log
  • stack_state
activity 省略可

いくつかのコマンドで、特定のアクティビティ(ライフサイクルイベント)を指定するのに利用します。下記のいずれかを指定します。

  • reboot
  • setup
  • configure
  • update_dependencies
  • install_dependencies
  • update_custom_cookbooks
  • execute_recipes
  • deploy
  • undeploy
  • shutdown
  • start
  • stop
  • restart
  • rollback
command 省略可 いくつかのコマンドで特定の実行履歴を指定するのに利用します。
dateにコマンドが実行された日付を「'yyyy-mm-ddd-hh-mm-ss'」のような形式(シングルクォートを含みます)で指定することで、特定の時間に実行されたコマンドを指定することができます。
コマンドが実行された日時を知るためには、list_commandsを実行してください。
  • ※エージェントが同じアクティビティを複数回指定していた場合、そのコマンドのアクティビティとコマンドが実行された日時の両方を指定することで、特定の実行履歴を指定することができます。
    アクティビティだけを指定して日時を省略した場合、エージェントCLIコマンドは、最新の実行履歴を利用します。
    両方の引数を省略した場合、エージェントCLIコマンドは、最新のアクティビティを利用します。

各コマンドとその引数について

各コマンドとその引数は、下記の通りです。

agent_report

エージェントに関する情報を表示します。

コマンド実行例
automation-agent-cli agent_report
出力例

PHPアプリレイヤーのサーバーでconfigureコマンドを実行したあとの出力例です。

[root@mystkapp301 ~]# automation-agent-cli agent_report

NiftyCloud Automation Agent State Report:

  Last activity was a "configure" on 2014-04-18 09:49:27 +0900
  Agent Status: The NiftyCloud Automation agent is running as PID 3847
  Agent Version: 1, up to date
get_json

コマンドJSONを表示します。

デフォルトでは、get_jsonは最新のコマンドJSONを表示します。下記のオプションを利用することでコマンドJSONを指定することができます。

activity 指定したアクティビティのコマンドJSONを表示します。
date 指定した日付に実行されたコマンドJSONを表示します。
コマンド実行例
automation-agent-cli get_json [activity] [date]
出力例

PHPアプリレイヤーのサーバーで最新のconfigureコマンドのコマンドJSONを表示する例です。

[root@mystkapp301 ~]# automation-agent-cli get_json setup
{
  "recipes": [
    "opsworks_custom_cookbooks::load",
    "opsworks_custom_cookbooks::execute"
  ],
  "opsworks_custom_cookbooks": {
    "recipes": [
      "opsworks_initial_setup",
      "ssh_host_keys",
      "ssh_users",
      "mysql::client",
      "dependencies",
      "ebs",
      "opsworks_ganglia::client",
      "opsworks_stack_state_sync",
      "mod_php5_apache2",
      "deploy::default",
      "deploy::php",
      "phpapp::appsetup",
      "test_suite",
      "opsworks_cleanup"
    ],
    "enabled": true,
    "scm": {
      "type": "git",
      "repository": "git://github.com/NIFTYCloud/automation-example-cookbooks.git",
      "ssh_key": null,
      "password": null,
      "user": null,
      "revision": null
    }
  },
  "ebs": {
    "devices": {
    },
    "raids": {
    }
  },
  "dependencies": {
    "gem_binary": "/usr/local/bin/gem",
    "gems": {
    },
    "debs": {
    }
  },
  "opsworks": {
    "activity": "setup",
    "agent_version": 1,
    "sent_at": 1397781922,
    "valid_client_activities": [
      "reboot",
      "setup",
      "configure",
      "update_dependencies",
      "install_dependencies",
      "update_custom_cookbooks",
      "execute_recipes",
      "deploy",
      "undeploy",
      "shutdown",
      "start",
      "stop",
      "restart",
      "rollback"
    ],
    "ruby_version": "1.9.3",
    "ruby_stack": "ruby",
    "rails_stack": {
      "name": null
    },
    "deployment": null,
    "instance": {
      "id": "c765f9e1-49d6-444f-8415-bcf9227eb8df",
      "hostname": "mystkapp301",
      "instance_type": "mini",
      "ip": "XXX.XXX.XXX.XXX",
      "private_ip": "XXX.XXX.XXX.XXX",
      "public_dns_name": null,
      "private_dns_name": null,
      "layers": [
        "php-app"
      ],
      "architecture": "x86_64",
      "backends": 2,
      "aws_instance_id": "mystkapp301",
      "region": "east-1",
      "availability_zone": "east-13"
    },
    "stack": {
      "id": "24899a06-c672-43e6-8e08-fb06d4b6df85",
      "name": "mystk",
      "vpc_id": null,
      "elb-load-balancers": [

      ]
    },
    "layers": {
      "php-app": {
        "name": null,
        "id": "fbdf9781-e547-4a34-93a9-cec3d90653b2",
        "instances": {
        },
        "elb-load-balancers": [

        ]
      },
      "db-master": {
        "name": null,
        "id": "cab72a27-3c36-41b7-8523-41383d6a813a",
        "instances": {
        },
        "elb-load-balancers": [

        ]
      }
    },
    "applications": [

    ]
  },
  "mysql": {
    "server_root_password": "gv2c7zzmk9"
  },
  "deploy": {
  },
  "ssh_users": {
  },
  "ssh_host_rsa_key_private": null,
  "ssh_host_rsa_key_public": null,
  "ssh_host_dsa_key_private": null,
  "ssh_host_dsa_key_public": null
}
instance_report

サーバーの詳細な情報を表示します。

コマンド実行例
automation-agent-cli instance_report
出力例

PHPアプリレイヤーサーバーで実行した場合の出力例です。

[root@mystkapp301 ~]# automation-agent-cli instance_report

NiftyCloud Automation Instance Agent State Report:

  Last activity was a "configure" on 2014-04-18 09:49:27 +0900
  Agent Status: The NiftyCloud Automation agent is running as PID 3847
  Agent Version: 1, up to date
  Automation Stack: mystk
  Automation Layers: php-app
  Automation Instance: mystkapp301
  Computing Instace ID: c765f9e1-49d6-444f-8415-bcf9227eb8df
  Computing Instance Type: mini
  Architecture: x86_64
  Total Memory: 0.50 Gb
  CPU: 1x  Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz

Location:

  Computing Region: east-1
  Computing Availability Zone: east-13

Networking:

  Public IP: XXX.XXX.XXX.XXX
  Private IP: XXX.XXX.XXX.XXX
list_commands

サーバーで実行されたコマンドの履歴を表示します。
このコマンドで表示された日時を、ほかのコマンドのdate引数に指定することができます。

コマンド実行例
automation-agent-cli list_commands [activity] [date]
出力例

setup、configureコマンドが実行されたPHPアプリレイヤーのサーバーでの出力例です。

[root@mystkapp301 ~]# automation-agent-cli list_commands
2014-04-18T09:45:52       setup
2014-04-18T09:50:22       configure
run_command

コマンドJSONを実行します。

  • ※実行した際のChefのログは、show_logコマンドで閲覧することができます。
    run_commandはレシピのテスト用途に提供されているものであり、run_commandでコマンドを実行してもコントロールパネルの「デプロイ履歴」には反映されませんのでご注意ください。

デフォルトでは、run_commandは、最新のコマンドJSONを再実行します。
下記のオプションを利用すること、で特定のコマンドJSONを指定することができます。

activity 指定したアクティビティのコマンドJSONを再実行します。
date 指定した日付に実行されたコマンドJSONを再実行します。
file コマンドJSONのファイルを指定して実行します。
コマンドJSONのファイルは/var/lib/niftycloud/automation/chef/に保存されています。
コマンド実行例
automation-agent-cli run_command [activity] [date] [/path/to/valid/json.file]
出力例

PHPアプリレイヤーのサーバーでconfigureコマンドを再実行する例です。

[root@mystkapp301 ~]# automation-agent-cli run_command configure
[2014-04-18 10:37:38] INFO [automation-agent-cli 7481] About to re-run 'configure' from 2014-04-18T09:50:22
Starting Chef Client, version 11.4.4
Compiling Cookbooks...
Converging 9 resources
Recipe: opsworks_custom_cookbooks::checkout
  * package[git] action install (up to date)
  * directory[/root/.ssh] action create (up to date)
  * file[/root/.ssh/config] action touch
    - update utime on file /root/.ssh/config

  * execute[echo 'StrictHostKeyChecking no' > /root/.ssh/config] action runStrictHostKeyChecking no
 (skipped due to not_if)
  * template[/root/.ssh/id_dsa] action create (skipped due to not_if)
  * git[Download Custom Cookbooks] action checkout (skipped due to not_if)
  * ruby_block[Move single cookbook contents into appropriate subdirectory] action run (skipped due to only_if)
  * execute[ensure correct permissions of custom cookbooks] action run
    - execute chmod -R go-rwx /opt/niftycloud/automation/current/conf/../site-cookbooks

Recipe: opsworks_custom_cookbooks::execute
  * ruby_block[Compile Custom OpsWorks Run List] action runCompiling Cookbooks...
/opt/niftycloud/automation/current/cookbooks/opsworks_commons/libraries/activesupport_blank.rb:92: warning: already initialized constant NON_WHITESPACE_REGEXP
Recipe: opsworks_ganglia::configure-client
  * service[gmond] action nothinggmond (pid 4086) を実行中...
gmond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
 (up to date)
  * template[/etc/ganglia/gmond.conf] action create (up to date)
  * execute[Stop gmond if there is no monitoring master] action run4086

    - execute pkill gmond

Recipe: ssh_users::default
  * group[automation] action create (up to date)
  * template[/etc/sudoers] action create (up to date)
Recipe: agent_version::default
  * template[/var/lib/niftycloud/automation/TARGET_VERSION] action create (up to date)
Recipe: opsworks_stack_state_sync::hosts
  * template[/etc/hosts] action create (up to date)
Recipe: opsworks_cleanup::default
  * ruby_block[Remove temp directories] action run
    - execute the ruby block Remove temp directories

  * ruby_block[Clean up old chef log files] action run
    - execute the ruby block Clean up old chef log files


    - execute the ruby block Compile Custom OpsWorks Run List

Chef Client finished, 6 resources updated
[2014-04-18 10:37:47] INFO [automation-agent-cli 7481] Finished Chef run with exitcode 0
show_log

Chefのログを表示します。

デフォルトでは、一番新しいChefのログについて、ログの末尾部分を表示し行の追加を待つ tail -f のような挙動になります。
ファイル全体を表示したい場合には -b オプションを指定してください。
特定のコマンドについてのChefのログを表示したい場合には、下記のオプションを指定します。

activity 指定されたアクティビティの最新のログを表示します。
date 指定された日付に実行されたコマンドJSONのログを表示します。
コマンド実行例
automation-agent-cli show_log [acvitity] [date]
出力例

PHPアプリサーバーで一番新しいChefのログを表示する例です。

[root@mystkapp301 ~]# automation-agent-cli show_log
(ページャーが起動されます)
[2014-04-18T10:37:46+09:00] DEBUG: Found recipe configure in cookbook php
[2014-04-18T10:37:46+09:00] DEBUG: Loading Recipe test_suite via include_recipe
[2014-04-18T10:37:46+09:00] DEBUG: Found recipe default in cookbook test_suite
[2014-04-18T10:37:46+09:00] DEBUG: Loading Recipe opsworks_cleanup via include_recipe
[2014-04-18T10:37:46+09:00] DEBUG: Found recipe default in cookbook opsworks_cleanup
[2014-04-18T10:37:46+09:00] INFO: Processing service[gmond] action nothing (opsworks_ganglia::configure-client line 1)
[2014-04-18T10:37:46+09:00] DEBUG: service[gmond] supports status, running
[2014-04-18T10:37:46+09:00] DEBUG: service[gmond] is running
[2014-04-18T10:37:47+09:00] DEBUG: Doing nothing for service[gmond]
[2014-04-18T10:37:47+09:00] INFO: Processing template[/etc/ganglia/gmond.conf] action create (opsworks_ganglia::configure-client line 21)
[2014-04-18T10:37:47+09:00] DEBUG: Current content's checksum:  c7dfe73b106ced04516128d4c9dfff4bd6ac07c698d5459b84c623c83be3c125
[2014-04-18T10:37:47+09:00] DEBUG: Rendered content's checksum: c7dfe73b106ced04516128d4c9dfff4bd6ac07c698d5459b84c623c83be3c125
[2014-04-18T10:37:47+09:00] DEBUG: template[/etc/ganglia/gmond.conf] content has not changed.
[2014-04-18T10:37:47+09:00] INFO: Processing execute[Stop gmond if there is no monitoring master] action run (opsworks_ganglia::configure-client line 35)
[2014-04-18T10:37:47+09:00] INFO: execute[Stop gmond if there is no monitoring master] ran successfully
[2014-04-18T10:37:47+09:00] INFO: Processing group[automation] action create (ssh_users::default line 1)
[2014-04-18T10:37:47+09:00] INFO: Processing template[/etc/sudoers] action create (ssh_users::default line 22)
[2014-04-18T10:37:47+09:00] DEBUG: Current content's checksum:  385f19d49c66e10880090349b7d5f7f233d2efad6e7e197b7aeee093e3a0b28d
[2014-04-18T10:37:47+09:00] DEBUG: Rendered content's checksum: 385f19d49c66e10880090349b7d5f7f233d2efad6e7e197b7aeee093e3a0b28d
[2014-04-18T10:37:47+09:00] DEBUG: template[/etc/sudoers] content has not changed.
[2014-04-18T10:37:47+09:00] INFO: Processing template[/var/lib/niftycloud/automation/TARGET_VERSION] action create (agent_version::default line 1)
[2014-04-18T10:37:47+09:00] DEBUG: Current content's checksum:  6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
[2014-04-18T10:37:47+09:00] DEBUG: Rendered content's checksum: 6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
[2014-04-18T10:37:47+09:00] DEBUG: template[/var/lib/niftycloud/automation/TARGET_VERSION] content has not changed.
[2014-04-18T10:37:47+09:00] INFO: Processing template[/etc/hosts] action create (opsworks_stack_state_sync::hosts line 3)
[2014-04-18T10:37:47+09:00] DEBUG: Current content's checksum:  e29959ec5452ab2e434204d843fe09f1047485f3c4982739c8389c07db006b0a
[2014-04-18T10:37:47+09:00] DEBUG: Rendered content's checksum: e29959ec5452ab2e434204d843fe09f1047485f3c4982739c8389c07db006b0a
[2014-04-18T10:37:47+09:00] DEBUG: template[/etc/hosts] content has not changed.
[2014-04-18T10:37:47+09:00] INFO: Processing ruby_block[Remove temp directories] action run (opsworks_cleanup::default line 3)
[2014-04-18T10:37:47+09:00] INFO: ruby_block[Remove temp directories] called
[2014-04-18T10:37:47+09:00] INFO: Processing ruby_block[Clean up old chef log files] action run (opsworks_cleanup::default line 11)
[2014-04-18T10:37:47+09:00] INFO: Clean up: There are fewer than 10 logs - skipping cleanup
[2014-04-18T10:37:47+09:00] INFO: ruby_block[Clean up old chef log files] called
[2014-04-18T10:37:47+09:00] INFO: ruby_block[Compile Custom OpsWorks Run List] called
[2014-04-18T10:37:47+09:00] INFO: Chef Run complete in 7.868890616 seconds
[2014-04-18T10:37:47+09:00] INFO: Running report handlers
[2014-04-18T10:37:47+09:00] INFO: Report handlers complete
[2014-04-18T10:37:47+09:00] DEBUG: Exiting
hello
Waiting for data... (interrupt to abort)
stack_state

スタックの状態を表示します。

コマンド実行例
automation-agent-cli stack_state
出力例

PHPアプリレイヤーのサーバーで実行した場合の例です。

[root@mystkapp301 ~]# automation-agent-cli stack_state
{
  "last_command": {
    "sent_at": 1397782167,
    "activity": "configure"
  },
  "instance": {
    "id": "c765f9e1-49d6-444f-8415-bcf9227eb8df",
    "hostname": "mystkapp301",
    "instance_type": "mini",
    "ip": "XXX.XXX.XXX.XXX",
    "private_ip": "XXX.XXX.XXX.XXX",
    "public_dns_name": null,
    "private_dns_name": null,
    "layers": [
      "php-app"
    ],
    "architecture": "x86_64",
    "backends": 2,
    "aws_instance_id": "mystkapp301",
    "region": "east-1",
    "availability_zone": "east-13"
  },
  "layers": {
    "php-app": {
      "name": null,
      "id": "fbdf9781-e547-4a34-93a9-cec3d90653b2",
      "instances": {
        "mystkapp301": {
          "backends": 2,
          "ip": "XXX.XXX.XXX.XXX6",
          "private_ip": "XXX.XXX.XXX.XXX",
          "instance_type": "mini",
          "status": "online",
          "aws_instance_id": "mystkapp301",
          "created_at": "2014-04-18T09:35:39+09:00",
          "booted_at": "2014-04-18T09:35:50+09:00",
          "region": "east-1",
          "availability_zone": "east-13",
          "public_dns_name": null,
          "private_dns_name": null,
          "elastic_ip": null
        }
      },
      "elb-load-balancers": [

      ]
    },
    "db-master": {
      "name": null,
      "id": "cab72a27-3c36-41b7-8523-41383d6a813a",
      "instances": {
      },
      "elb-load-balancers": [

      ]
    }
  },
  "applications": [

  ],
  "stack": {
    "id": "24899a06-c672-43e6-8e08-fb06d4b6df85",
    "name": "mystk",
    "vpc_id": null,
    "elb-load-balancers": [

    ]
  },
  "agent": {
    "valid_activities": [
      "reboot",
      "setup",
      "configure",
      "update_dependencies",
      "install_dependencies",
      "update_custom_cookbooks",
      "execute_recipes",
      "deploy",
      "undeploy",
      "shutdown",
      "start",
      "stop",
      "restart",
      "rollback"
    ]
  }
}

推奨画面サイズ 1024×768 以上