Команда Boto Execute shell для экземпляра ec2

Я новичок в EC2 и boto. У меня есть исполняемый экземпляр EC2, и я хочу выполнить команду оболочки, например, например. apt-get update через boto.

Я много искал и нашел решение с помощью user_data в run_instances, но что, если экземпляр уже запущен?

Я даже не знаю, возможно ли это. Любая подсказка в этой ссылке будет большой помощью.

Ответ 1

Для этого можно использовать модуль boto.manage.cmdshell. Чтобы использовать его, вы должны установить пакет paramiko. Простой пример использования:

import boto.ec2
from boto.manage.cmdshell import sshclient_from_instance

# Connect to your region of choice
conn = boto.ec2.connect_to_region('us-west-2')

# Find the instance object related to my instanceId
instance = conn.get_all_instances(['i-12345678'])[0].instances[0]

# Create an SSH client for our instance
#    key_path is the path to the SSH private key associated with instance
#    user_name is the user to login as on the instance (e.g. ubuntu, ec2-user, etc.)
ssh_client = sshclient_from_instance(instance,
                                     '<path to SSH keyfile>',
                                     user_name='ec2-user')
# Run the command. Returns a tuple consisting of:
#    The integer status of the command
#    A string containing the output of the command
#    A string containing the stderr output of the command
status, stdout, stderr = ssh_client.run('ls -al')

Это было напечатано из памяти, но я думаю, что это правильно.

Вы также можете проверить Fabric (http://docs.fabfile.org/), который имеет аналогичную функциональность, но также имеет гораздо более сложные функции и возможности.

Ответ 2

Я думаю, вы можете использовать ткань для своих требований. Просто проверьте упаковку ткани один раз. Вы можете выполнить команду на удаленной серверной оболочке через библиотеку материалов.

Он очень прост в использовании, и вы можете интегрировать как boto, так и ткань. Вместе они работают блестяще.

Плюс та же команда может быть выполнена для n числа узлов. Которые, я считаю, могут быть вашими требованиями.

Просто проверьте это.