Passar nome do host como argumento na tarefa Fabric

5

Estou tentando montar um script de malha que crie uma instância virtual por meio de uma API e, em seguida, execute o fantoche nessa instância. Eu tenho uma tarefa que cria a VM e uma tarefa que pode 'bootstrap' a VM. No entanto, estou tendo dificuldades para vincular esses itens, porque não sei como passar alguns dados gerados na primeira tarefa para a segunda tarefa como o nome do host. Por exemplo,

def createVM():
    newhostname = local('/usr/bin/createVM')
    bootstrap(newhostname)

def bootstrap(hostname):
    env.hosts = [hostname]
    run('puppet agent -t')

Isso não parece funcionar, e sou solicitado que o nome do host execute o script fabric, se eu apenas executar fab createVM .

Qual é a melhor maneira de fazer isso?

    
por growse 13.12.2013 / 18:59

2 respostas

3

Você pode dar uma olhada no execute () função. Você pode usá-lo para sobrescrever quais hosts você executa uma tarefa e passar argumentos extras.

Você provavelmente precisará de algo nos moldes de

def createVM():
    newhostname = local('/usr/bin/createVM')
    execute(bootstrap, hosts=[newhostname])

def bootstrap():
    run('puppet agent -t')
    
por 15.12.2013 / 02:43
1

Você pode querer defini-lo no dicionário do ambiente ( env ), por exemplo:

env.newhostname = local('/usr/bin/createVM')

Ou apenas defina env.hosts :

env.hosts = [local('/usr/bin/createVM')]

Em seguida, execute fab createVM bootstrap

Você pode ver mais detalhes aqui:

link

    
por 16.10.2015 / 16:09

Tags