Creazione di associazioni che eseguono playbook Ansible - AWS Systems Manager

AWS Systems ManagerChange Managernon è più aperto a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta AWS Systems ManagerChange Managerla pagina Modifica della disponibilità.

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 playbook Ansible

È possibile creare State Manager associazioni che eseguono Ansible playbook utilizzando il documento AWS-ApplyAnsiblePlaybooks SSM. State Managerè uno strumento in. 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 documenti SSM che consentono di creare associazioni State Manager che eseguono playbook Ansible: AWS-RunAnsiblePlaybook e AWS-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 playbook Ansible non sono supportate in 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. È possibile fornire playbook di origine in file zip o in una struttura di directory. Il file Zip o la directory sono archiviabili in GitHub o 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 sono archiviabili in GitHub in un singolo file o come un set combinato di file di playbook. Per scaricare contenuti da GitHub, specificare le informazioni sul repository GitHub in formato 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

È possibile anche archiviare e scaricare playbook Ansible in Amazon S3 come singolo file .zip o una 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 includere le autorizzazioni per il bucket S3. Per ulteriori informazioni, consulta la pagina Configurazione delle autorizzazioni dell'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. Quando viene trovato un file .zip, il documento decomprime automaticamente il file e quindi esegue l'automazione Ansible specificata.

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 sono mappate direttamente alle opzioni di livello di dettaglio Ansible.

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 (Package Management), Python 3, Ansible, Unzip

  • Versioni supportate da Amazon Linux: Ansible

  • RHEL: Python 3, Ansible, Unzip

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

Creazione di un'associazione che esegue playbook Ansible (console)

La procedura seguente descrive come utilizzare la console di Systems Manager per creare un'associazione State Manager che esegua playbook Ansibleutilizzando il documento AWS-ApplyAnsiblePlaybooks.

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

  2. Nel pannello di navigazione, scegliere 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 si sceglie GitHub, immettere le informazioni sul repository nel formato seguente.

    { "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 Extra Variables (Variabili aggiuntive), immettere le variabili per l'invio da State Manager ad Ansible in fase di runtime.

  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 Comprensioni su destinazioni e controlli di velocità nelle associazioni di State Manager.

  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 istanze nodi gestiti. Per informazioni sull'utilizzo dei controlli di velocità, consultare Comprensioni su destinazioni e controlli di velocità nelle associazioni di State Manager.

    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 assegnano la possibilità di scrivere dati in un S3 Bucket sono quelle del profilo del nodo e non quelle dell'utente IAM che esegue questo processo. Per ulteriori informazioni, consulta le pagine Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager oppure Creazione di un ruolo di servizio IAM per un ambiente ibrido. Inoltre, se il bucket S3 specificato si trova in un Account AWS diverso, assicurarsi che il profilo dell'istanza o il ruolo di servizio IAM associato all'istanza 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.

Creazione di un'associazione che esegue playbook Ansible (CLI)

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

Per creare un'associazione che esegue playbook Ansible (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 esegue playbook Ansible eseguendo il targeting dei nodi tramite tag. Sostituisci ogni 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) GitHub fonte

    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"