Linux - Executando comandos quando outro comando é executado

2

Então, estou escrevendo uma carga de coisas de automação de infraestrutura atm, principalmente em torno do Cloudformation, e tenho uma ferramenta de wrapper / framework que estou usando para gerenciar as implantações do CF (Scepter). Eu enfrentei uma tarefa que não é suportada pelo CF, mas é necessária para a conclusão da tarefa e estou cansado de adicionar etapas de intervenção manual na metade das tarefas. Então, o que eu gostaria é uma maneira de acionar comandos quando um comando específico é executado. Por exemplo:

sceptre create-stack example mystack

E eu tenho um comando aws cli para acionar quando alguém executa isso.

aws module command --option=lol

Obrigado.

EDIT: Se alguém tem uma maneira nativa do linux de fazê-lo, por favor, forneça-o, eu gostaria de entender as várias maneiras que eu poderia ter completado esta tarefa.

    
por John Von Neumann 18.04.2018 / 23:42

2 respostas

0

E eu tenho vergonha de dizer que encontrei outra maneira de fazer isso, por que eu não apenas RTFM? Então, isso é realmente uma maneira nativa do Scepter.

Ganchos permite que a habilidade de comandos personalizados sejam executados quando as ações do Scepter ocorrem.

Um gancho é executado em um determinado ponto de gancho quando o Scepter é executado.

Se necessário, os usuários podem criar seus próprios ganchos, conforme descrito na seção Ganchos personalizados. Pontos de gancho

before_create or after_create - run hook before or after stack creation.

before_update or after_update - run hook before or after stack update.

before_delete or after_delete - run hook before or after stack deletion.

Sintaxe:

Os ganchos são especificados no arquivo de configuração de uma pilha, usando a seguinte sintaxe:

hooks:
    hook_point:
        - !command_type command 1
        - !command_type command 2
    
por 19.04.2018 / 00:09
1

Então eu encontrei uma maneira de fazer isso na verdade, mas não é uma resposta de superusuário, então se os mods quiserem excluir, mover ou qualquer outra resposta / pergunta, fique à vontade.

Usando uma função do AWS Lambda em um recurso personalizado

With Lambda functions and custom resources, you can run custom code in response to stack events (create, update, and delete). The following custom resource invokes a Lambda function and sends it the StackName property as input. The function uses this property to get outputs from the appropriate stack.

JSON

"MyCustomResource" : {
  "Type" : "Custom::TestLambdaCrossStackRef",
  "Properties" : {
    "ServiceToken": { "Fn::Join": [ "", [ "arn:aws:lambda:", { "Ref": "AWS::Region" }, ":", { "Ref": "AWS::AccountId" }, ":function:", {"Ref" : "LambdaFunctionName"} ] ] },
    "StackName": {
      "Ref": "NetworkStackName"
    }
  }
}

YAML

MyCustomResource: 
  Type: "Custom::TestLambdaCrossStackRef"
  Properties: 
    ServiceToken:
      !Sub |
        arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${LambdaFunctionName}
    StackName: 
      Ref: "NetworkStackName"
    
por 18.04.2018 / 23:49