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/04/06 18:43] – [Galaxy] 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 286: | Line 301: | ||
Check https:// | Check https:// | ||
+ | |||
+ | |||
+ | ==== AWX installation ==== | ||
+ | The UI, which enables team management and delegation is available as the AWX project | ||
+ | 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.1523040232.txt.gz · Last modified: (external edit)