Procedura dettagliata: creazione di associazioni che eseguono playbook Ansible - 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à.

Procedura dettagliata: creazione di associazioni che eseguono playbook Ansible

È possibile creare State Manager associazioni che eseguono Ansible playbook utilizzando il AWS-ApplyAnsiblePlaybooks documento SSM. 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 documenti SSM che consentono di creare State Manager associazioni che eseguono Ansible playbook: 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 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 le informazioni sul tuo GitHub repository 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

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/doc-example-bucket/playbook.yml" }

Esempio 2: download dei contenuti di una directory

{ "path":"https://s3.amazonaws.com/doc-example-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, consulta la pagina Configurazione delle autorizzazioni dell'istanza 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.

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 3Ansible, 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.

    oppure

    Se la AWS Systems Manager home page si apre per prima, scegli l'icona del menu ( 
    The menu icon
  ) per aprire il riquadro di navigazione, quindi 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 Informazioni 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 nodi gestiti. Per informazioni sull'utilizzo dei controlli di velocità, consultare Informazioni 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 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 altro bucket Account AWS, verifica che il profilo di istanza o il ruolo del servizio IAM 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.

Creare un'associazione che esegua Ansible playbook (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 documento. AWS-ApplyAnsiblePlaybooks

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 ciascun segnaposto delle risorse di esempio 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/DOC-EXAMPLE-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"