Creazione di associazioni che eseguono Ansible playbook - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di associazioni che eseguono Ansible playbook

È possibile creare State Manager associazioni che eseguono Ansible playbook utilizzando il AWS-ApplyAnsiblePlaybooks SSM documento. State Managerè una capacità di. AWS Systems Manager Questo documento offre i seguenti vantaggi per l'esecuzione di playbook:

  • Supporto per l'esecuzione di playbook complessi

  • Supporto per il download di playbook da GitHub e Amazon Simple Storage Service (Amazon S3)

  • Supporto per la struttura di playbook compressa

  • Logging avanzato

  • Possibilità di specificare quale playbook eseguire quando i playbook sono raggruppati

Nota

Systems Manager include due SSM documenti che consentono di creare State Manager associazioni che eseguono Ansible playbook: AWS-RunAnsiblePlaybook eAWS-ApplyAnsiblePlaybooks. Il documento AWS-RunAnsiblePlaybook è obsoleto. Rimane disponibile in Systems Manager per scopi di legacy. Ti consigliamo di utilizzare il documento AWS-ApplyAnsiblePlaybooks come conseguenza dei miglioramenti descritti qui.

Le associazioni che eseguono Ansible playbook non sono supportate su. macOS

Supporto per l'esecuzione di playbook complessi

Il documento AWS-ApplyAnsiblePlaybooks supporta playbook complessi, raggruppati perché copia l'intera struttura di file in una directory locale prima di eseguire il playbook principale specificato. Puoi fornire playbook di origine in file zip o in una struttura di directory. Il file o la directory Zip possono essere archiviati in GitHub Amazon S3.

Supporto per il download di playbook da GitHub

Il documento AWS-ApplyAnsiblePlaybooks utilizza il plugin aws:downloadContent per scaricare i file di playbook. I file possono essere archiviati GitHub in un unico file o come set combinato di file playbook. Per scaricare contenuti daGitHub, specifica il formato delle informazioni sul tuo GitHub repository. JSON Ecco un esempio.

{ "owner":"TestUser", "repository":"GitHubTest", "path":"scripts/python/test-script", "getOptions":"branch:master", "tokenInfo":"{{ssm-secure:secure-string-token}}" }

Supporto per il download di playbook da Amazon S3

Puoi anche archiviare e scaricare Ansible playbook in Amazon S3 come singolo file.zip o come struttura di directory. Per scaricare contenuti da Amazon S3, specificare il percorso del file. Qui di seguito sono riportati due esempi.

Esempio 1: download di un file di playbook specifico

{ "path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/playbook.yml" }

Esempio 2: download dei contenuti di una directory

{ "path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/ansible/webservers/" }
Importante

Se specifichi Amazon S3, il profilo dell'istanza AWS Identity and Access Management (IAM) sui nodi gestiti deve essere configurato con la AmazonS3ReadOnlyAccess policy. Per ulteriori informazioni, vedere Configurazione delle autorizzazioni di istanza richieste per Systems Manager.

Supporto per la struttura di playbook compressa

Il documento AWS-ApplyAnsiblePlaybooks consente di eseguire file .zip compressi nel bundle scaricato. Il documento verifica se i file scaricati contengono un file compresso in formato .zip. Se viene trovato un file.zip, il documento decomprime automaticamente il file e quindi esegue l'automazione specificata. Ansible

Registrazione avanzata

Il documento AWS-ApplyAnsiblePlaybooks include un parametro facoltativo per specificare diversi livelli di registrazione. Specifica -v per basso livello di dettaglio, -vv o -vvv per livello di dettaglio medio e -vvvv per la registrazione a livello di debug. Queste opzioni si associano direttamente alle Ansible opzioni di verbosità.

Possibilità di specificare quale playbook eseguire quando i playbook sono raggruppati

Il documento AWS-ApplyAnsiblePlaybooks include un parametro obbligatorio per specificare quale playbook eseguire quando più playbook vengono raggruppati. Questa opzione offre flessibilità per l'esecuzione di playbook per supportare diversi casi d'uso.

Comprensione delle dipendenze installate

Se si specifica True per il InstallDependenciesparametro, Systems Manager verifica che nei nodi siano installate le seguenti dipendenze:

  • Ubuntu Server/Debian Server: Apt-Get (Gestione dei pacchetti), Python 3, Unzip Ansible

  • Amazon Linux: Ansible

  • RHEL: Python 3, Ansible Decomprimi

Se una o più di queste dipendenze non vengono trovate, Systems Manager le installa automaticamente.

Crea un'associazione che esegua Ansible playbook (console)

La procedura seguente descrive come utilizzare la console Systems Manager per creare un'State Managerassociazione che esegua Ansible i playbook utilizzando il AWS-ApplyAnsiblePlaybooks documento.

Per creare un'associazione che esegua Ansible playbook (console)
  1. Apri la AWS Systems Manager console all'indirizzo https://console.aws.amazon.com/systems-manager/.

  2. Nel riquadro di navigazione, scegli State Manager.

  3. Selezionare State Manager poi Create Association (Crea associazione).

  4. Per Name (Nome), specificare un nome che consente di ricordare lo scopo dell'associazione.

  5. Nell'elenco Document (Documento) scegliere AWS-ApplyAnsiblePlaybooks.

  6. Nella sezione Parametri, per Tipo di sorgente, scegli uno dei due GitHubo S3.

    GitHub

    Se lo desideri GitHub, inserisci le informazioni sul repository nel seguente formato.

    { "owner":"user_name", "repository":"name", "path":"path_to_directory_or_playbook_to_download", "getOptions":"branch:branch_name", "tokenInfo":"{{(Optional)_token_information}}" }

    S3

    Se si sceglie S3, immettere le informazioni sul percorso nel formato seguente.

    { "path":"https://s3.amazonaws.com/path_to_directory_or_playbook_to_download" }
  7. Per Install Dependencies (Installa dipendenze), scegliere un'opzione.

  8. (Facoltativo) Per Playbook File (File di playbook), immettere un nome file. Se il playbook è contenuto in un file Zip, specificare un percorso relativo al file Zip.

  9. (Facoltativo) Per le variabili aggiuntive, inserite le variabili a cui desiderate State Manager inviarle Ansible in fase di esecuzione.

  10. (Facoltativo) Per Check (Verifica), scegliere un'opzione.

  11. (Facoltativo) Per Verbose (Modalità dettagliata), scegliere un'opzione.

  12. Per Targets (Destinazioni), scegliere un'opzione. Per informazioni sull'utilizzo delle destinazioni, consultare Comprensione degli obiettivi e dei controlli tariffari nelle State Manager associazioni.

  13. Nella sezione Specify schedule (Specifica pianificazione), scegliere On Schedule (Conforme a pianificazione) o No schedule (Nessuna pianificazione). Se si sceglie On Schedule (Conforme a pianificazione), utilizzare i pulsanti disponibili per creare una pianificazione cron o rate per l'associazione.

  14. Nella sezione Advanced options (Opzioni avanzate), per Compliance severity (Gravità conformità), scegliere un livello di gravità per l'associazione. Il report di conformità indica se l'associazione è conforme o non conforme e il livello di gravità specificato qui. Per ulteriori informazioni, consulta Informazioni sulla conformità delle associazioni State Manager.

  15. Nella sezione Rate control (Controllo velocità), configurare le opzioni per eseguire le associazioni di State Manager in tutto il parco nodi gestiti. Per informazioni sull'utilizzo dei controlli di velocità, consultare Comprensione degli obiettivi e dei controlli tariffari nelle State Manager associazioni.

    Nella sezione Concurrency (Simultaneità) scegliere un'opzione:

    • Scegliere targets (target) per immettere il numero assoluto di target che possono eseguire contemporaneamente l'associazione.

    • Scegliere percentage (percentuale) per immettere la percentuale del set target che può eseguire contemporaneamente l'associazione.

    Nella sezione Error threshold (Soglia di errore). scegliere un'opzione:

    • Scegliere errors (errori) per immettere il numero assoluto di errori consentiti prima che State Manager arresti l'esecuzione delle associazioni su altri target.

    • Scegliere percentage (percentuale) per immettere una percentuale di errori consentiti prima che State Manager arresti l'esecuzione delle associazioni su altri target.

  16. (Opzionale) In Output optione (Opzioni di output), per salvare l'output del comando in un file, selezionare la casella Enable writing output to S3 (Abilita scrittura in S3). Digitare i nomi del bucket e del prefisso (cartella) nelle caselle.

    Nota

    Le autorizzazioni S3 che garantiscono la possibilità di scrivere i dati in un bucket S3 sono quelle del profilo di istanza assegnato al nodo gestito, non quelle dell'IAMutente che esegue questa attività. Per ulteriori informazioni, vedere Configurare le autorizzazioni di istanza richieste per Systems Manager o Creare un ruolo IAM di servizio per un ambiente ibrido. Inoltre, se il bucket S3 specificato si trova in un altro bucket Account AWS, verifica che il profilo di istanza o il ruolo di IAM servizio associato al nodo gestito disponga delle autorizzazioni necessarie per scrivere su quel bucket.

  17. Scegliere Create Association (Crea associazione).

Nota

Se utilizzi i tag per creare un'associazione su uno o più nodi di destinazione e quindi rimuovi i tag da un nodo, tale nodo non eseguirà più l'associazione. Il nodo viene dissociato dal documento di State Manager.

Crea un'associazione che esegua playbook () Ansible CLI

La procedura seguente descrive come utilizzare AWS Command Line Interface (AWS CLI) per creare un'State Managerassociazione che esegua Ansible i playbook utilizzando il AWS-ApplyAnsiblePlaybooks documento.

Per creare un'associazione che esegua Ansible playbook () CLI
  1. Installa e configura AWS Command Line Interface (AWS CLI), se non l'hai già fatto.

    Per informazioni, consulta la pagina Installazione o aggiornamento della versione più recente di AWS CLI.

  2. Esegui uno dei seguenti comandi per creare un'associazione che esegua i Ansible playbook prendendo di mira i nodi utilizzando i tag. Sostituisci ciascuno example resource placeholder con le tue informazioni. Il comando (A) specifica GitHub come tipo di origine. Il comando (B) specifica Amazon S3 come tipo di origine.

    (A) fonte GitHub

    Linux & macOS
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"name\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"],"TimeoutSeconds":["3600"]}' \ --association-name "name" \ --schedule-expression "cron_or_rate_expression"
    Windows
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"name\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"], "TimeoutSeconds":["3600"]}' ^ --association-name "name" ^ --schedule-expression "cron_or_rate_expression"

    Ecco un esempio.

    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets "Key=tag:OS,Values=Linux" \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ansibleDocumentTest\", \"repository\": \"Ansible\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True"],"PlaybookFile":["hello-world-playbook.yml"],"ExtraVariables":["SSM=True"],"Check":["False"],"Verbose":["-v"]}' \ --association-name "AnsibleAssociation" \ --schedule-expression "cron(0 2 ? * SUN *)"

    (B) Origine S3

    Linux & macOS
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_playbook_to_download\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"]}' \ --association-name "name" \ --schedule-expression "cron_or_rate_expression"
    Windows
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_playbook_to_download\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"]}' ^ --association-name "name" ^ --schedule-expression "cron_or_rate_expression"

    Ecco un esempio.

    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets "Key=tag:OS,Values=Linux" \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/amzn-s3-demo-bucket/playbook.yml\"}"],"InstallDependencies":["True"],"PlaybookFile":["playbook.yml"],"ExtraVariables":["SSM=True"],"Check":["False"],"Verbose":["-v"]}' \ --association-name "AnsibleAssociation" \ --schedule-expression "cron(0 2 ? * SUN *)"
    Nota

    Le associazioni di State Manager non supportano tutte le espressioni cron e rate. Per ulteriori informazioni sulla creazione di espressioni cron e rate per le associazioni, consulta Riferimento: espressioni Cron e Rate per Systems Manager.

    Il sistema tenta di creare l'associazione sui nodi e di applicare immediatamente lo stato.

  3. Eseguire il comando riportato sotto per visualizzare uno stato aggiornato dell'associazione appena creata.

    aws ssm describe-association --association-id "ID"