devops:ansible
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| devops:ansible [2018/05/09 09:05] – [MODULE FAILURE - rc 127] skipidar | devops:ansible [2023/11/01 07:15] (current) – ↷ Page moved from camunda:devops:ansible to devops:ansible skipidar | ||
|---|---|---|---|
| Line 222: | Line 222: | ||
| - | ==== Extra vars ==== | + | ==== Extra vars alias arguments |
| - | Pass external variables to the playbook, to e.g. define hosts outside of the playbook. | + | Pass external variables |
| < | < | ||
| Line 239: | Line 239: | ||
| ... | ... | ||
| </ | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== Ansible behind proxy ==== | ||
| + | |||
| + | If you configure the Hosts to use corkscrew, then ansible will be able to reach the machines: | ||
| + | |||
| + | Open / | ||
| + | < | ||
| + | Host * | ||
| + | ProxyCommand corkscrew 194.138.0.33 9400 %h %p | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| Line 291: | Line 306: | ||
| The UI, which enables team management and delegation is available as the AWX project | The UI, which enables team management and delegation is available as the AWX project | ||
| https:// | https:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Importing and Including ==== | ||
| + | |||
| + | |include*|Is done evaluated at runtime| | ||
| + | |Import*|Is done at compile time. PREFER THAT.| | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | === import_tasks === | ||
| + | Can be used, to extract equal steps you want to reuse in a separate file. | ||
| + | |||
| + | |import_tasks*| Allows passing variables. Requires the imported file to have only tasks, no " | ||
| + | |||
| + | |||
| + | Usecase: requirements for a Renderer/ | ||
| + | |||
| + | common_requirements.yaml | ||
| + | It is important, that you dont have the header here. Only tasks | ||
| + | < | ||
| + | |||
| + | - name: Creates product configuration file | ||
| + | file: | ||
| + | path: / | ||
| + | state: touch | ||
| + | owner: ubuntu | ||
| + | group: ubuntu | ||
| + | mode: 0700 | ||
| + | |||
| + | - name: product config content | ||
| + | copy: | ||
| + | dest: "/ | ||
| + | content: | | ||
| + | Acquire:: | ||
| + | Verify-Peer " | ||
| + | Verify-Host " | ||
| + | |||
| + | SslCert "/ | ||
| + | SslKey "/ | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | Renderer: | ||
| + | < | ||
| + | --- | ||
| + | - hosts: "{{ host }}" | ||
| + | become: true | ||
| + | become_method: | ||
| + | become_user: | ||
| + | tasks: | ||
| + | |||
| + | - name: Install product requirements | ||
| + | import_tasks: | ||
| + | vars: | ||
| + | host: aws | ||
| + | |||
| + | - name: Install renderer | ||
| + | become: true | ||
| + | apt: product_renderer | ||
| + | </ | ||
| + | |||
| + | Viewer: | ||
| + | < | ||
| + | --- | ||
| + | - hosts: "{{ host }}" | ||
| + | become: true | ||
| + | become_method: | ||
| + | become_user: | ||
| + | tasks: | ||
| + | |||
| + | - name: Install product requirements | ||
| + | import_tasks: | ||
| + | vars: | ||
| + | host: aws | ||
| + | |||
| + | - name: Install VIEWER, reusing the tasks | ||
| + | become: true | ||
| + | apt: product_viewer | ||
| + | </ | ||
| + | |||
| + | |||
| + | === import_playbook === | ||
| + | |||
| + | Unfortunately lacks the possibility to pass in variables. | ||
| + | Which makes it unusable | ||
| + | |||
| + | |||
| + | |||
| + | ==== Read remote files ==== | ||
| + | To read remote file do use slurp | ||
| + | |||
| + | |||
| + | < | ||
| + | - name: set facts | ||
| + | set_fact: | ||
| + | dest_timestamp: | ||
| + | | ||
| + | | ||
| + | - name: Slurp timestamp file | ||
| + | slurp: | ||
| + | src: "{{ dest_timestamp }}" | ||
| + | register: slurpfile | ||
| + | |||
| + | - name: set the timestamp fact | ||
| + | set_fact: | ||
| + | timestamp: "{{ slurpfile[' | ||
| + | |||
| + | - name: timestamp variable | ||
| + | debug: msg=" | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Execute a shell script, as a user with a valid environment ==== | ||
| + | Sometimes you face the issues, that the environment variables defined by some tool, installed for a special user - are not defined, when you execute the tool. | ||
| + | |||
| + | To execute some installed software in a valid environment, | ||
| + | with / | ||
| + | with / | ||
| + | etc | ||
| + | |||
| + | use the following approach. | ||
| + | |||
| + | < | ||
| + | # unfortunately the environment defined by tool in / | ||
| + | - name: processing step | ||
| + | shell: | ||
| + | sudo -iu ubuntu yourtool.sh | ||
| + | args: | ||
| + | executable: /bin/bash | ||
| + | |||
| + | |||
| + | -i [command] | ||
| + | The -i (simulate initial login) option runs the shell specified in the passwd(5) entry of the target user as a login shell. | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | </ | ||
| + | See https:// | ||
| + | |||
| + | UNfortunately the aproach with become_user - does not have the same result | ||
devops/ansible.1525856738.txt.gz · Last modified: (external edit)
