Ansible: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
<source lang="bash">
<syntaxhighlight lang="bash">
sudo apt update  && sudo apt list  --upgradeable
sudo apt update  && sudo apt list  --upgradeable
sudo apt upgrade && sudo apt install ansible ansible-lint sshpass
sudo apt upgrade && sudo apt install ansible ansible-lint sshpass
Line 6: Line 6:
ansible --version
ansible --version
ansible-lint --version
ansible-lint --version
</source>
</syntaxhighlight>


== Playbook ==
== Playbook ==
Line 302: Line 302:
{|
{|
| valign="top" |
| valign="top" |
<source lang="bash">
<syntaxhighlight lang="bash">
python3 -m venv .venv --prompt="Molecule"
python3 -m venv .venv --prompt="Molecule"
# source .venv/bin/activate
# source .venv/bin/activate
# (Molecule) $
# (Molecule) $
</source>
</syntaxhighlight>


| valign="top" |
| valign="top" |
<source lang="bash">
<syntaxhighlight lang="bash">
python3 -m venv .venv --prompt="Molecule"
python3 -m venv .venv --prompt="Molecule"
# source .venv/bin/activate
# source .venv/bin/activate
# (Molecule) $
# (Molecule) $
</source>
</syntaxhighlight>


| valign="top" |
| valign="top" |
<source lang="PowerShell">
<syntaxhighlight lang="PowerShell">
python -m venv .venv --prompt="Molecule"
python -m venv .venv --prompt="Molecule"
# .venv\Scripts\activate
# .venv\Scripts\activate
# (Molecule) PS>
# (Molecule) PS>
</source>
</syntaxhighlight>


|-
|-
Line 327: Line 327:
|-
|-
| valign="top" |
| valign="top" |
<source lang="bash">
<syntaxhighlight lang="bash">
pip install -r requirements.txt
pip install -r requirements.txt
pip freeze  > requirements.txt
pip freeze  > requirements.txt
</source>
</syntaxhighlight>


| valign="top" |
| valign="top" |
<source lang="ini">
<syntaxhighlight lang="ini">
[all:vars]
[all:vars]
ansible_port=22
ansible_port=22
</source>
</syntaxhighlight>


| valign="ini" |
| valign="ini" |
<source lang="bash">
<syntaxhighlight lang="bash">
ansible_connection=ssh
ansible_connection=ssh
ansible_ssh_pass=vagrant
ansible_ssh_pass=vagrant
</source>
</syntaxhighlight>


|-
|-
Line 349: Line 349:
|-
|-
| valign="top"|
| valign="top"|
<source lang="bash">
<syntaxhighlight lang="bash">
ansible-inventory\
ansible-inventory\
  -i inventories/staging/\
  -i inventories/staging/\
  --list
  --list
</source>
</syntaxhighlight>


| valign="top"|
| valign="top"|
<source lang="bash">
<syntaxhighlight lang="bash">
ansible dns_servers\
ansible dns_servers\
  -i inventories/staging/\
  -i inventories/staging/\
  -m ping
  -m ping
</source>
</syntaxhighlight>


| valign="top"|
| valign="top"|
<source lang="bash">
<syntaxhighlight lang="bash">
ansible-playbook\
ansible-playbook\
  -i inventories/staging/\
  -i inventories/staging/\
  main_playbook.yml
  main_playbook.yml
</source>
</syntaxhighlight>


|-
|-

Revision as of 00:00, 19 May 2024

sudo apt update  && sudo apt list  --upgradeable
sudo apt upgrade && sudo apt install ansible ansible-lint sshpass

sshpass -V
ansible --version
ansible-lint --version

Playbook

chorke-academia-project
├─ main_playbook.yml
└─ inventories/
   ├─ staging/
   │  └─ academia/
   │     ├─ inventory.yml
   │     └─ group_vars/
   │        ├─ academia_group.yaml
   │        └─ all.yaml
   └─ test/
      └─ academia/
         ├─ inventory.yml
         └─ group_vars/
             ├─ academia_group.yaml
             └─ all.yaml
all:
  children:
    gtw_servers:
      hosts:
        10.20.30.1:
    dmz_servers:
      hosts:
        10.20.30.100:
    dns_servers:
      hosts:
        10.20.30.[100:102]:
      vars:
        ansible_port: 4321
        ansible_user: deploy
        ansible_ssh_pass: sadaqah

mkdir -p chorke-academia-project/inventories/{staging,test}/academia/{group_vars,host_vars}
touch    chorke-academia-project/inventories/{staging,test}/academia/group_vars/{all,academia_group}.yaml
touch    chorke-academia-project/inventories/{staging,test}/academia/inventory.yml
touch    chorke-academia-project/main_playbook.yml

cd chorke-academia-project
ansible-playbook  -i inventories/staging main_playbook.yml
ansible-inventory -i inventories/staging --list

Playbook » LXD

mkdir -p ~/Documents/ansible-playground
cd       ~/Documents/ansible-playground

cat << 'YML' | tee ./lxd-launch-ubuntu-24-lts.yml >/dev/null
---
- name: LXD Launch Ubuntu 24.04 LTS
  hosts: localhost
  connection: local
  vars:
    cpu_architecture: "{{ ansible_architecture }}"
    os_family: "{{ ansible_os_family }}"
    container_name: ubuntu-24-lts

  tasks:
    - name: Dirty Facts
      set_fact:
        raw_cpu_family: >
          {% if ansible_architecture == 'x86_64' %}
            amd64
          {% elif ansible_architecture == 'aarch64' %}
            arm64
          {% else %}
            {{ ansible_architecture }}
          {% endif %}
      delegate_to: localhost

    - name: Clean Facts
      set_fact:
        cpu_family: "{{ raw_cpu_family | trim }}"
      delegate_to: localhost

    - name: Launch Container
      community.general.lxd_container:
        name: "{{ container_name }}"
        ignore_volatile_options: true
        state: started
        source:
          type: image
          mode: pull
          protocol: simplestreams
          server: https://cloud-images.ubuntu.com/releases
          alias: 24.04/{{ cpu_family }}
        profiles: ["default"]
        wait_for_ipv4_addresses: true
        timeout: 600

    - name: Check Python
      delegate_to: "{{ container_name }}"
      ansible.builtin.raw: |
        lxc exec {{ container_name }} -- dpkg -s python3.11
      register: python_install_check
      failed_when: python_install_check.rc not in [0, 1]
      changed_when: false

    - name: Install Python
      delegate_to: "{{ container_name }}"
      ansible.builtin.raw: |
        lxc exec {{ container_name }} -- apt-get update
        lxc exec {{ container_name }} -- apt-get install -y python3.11
        lxc exec {{ container_name }} -- apt-get clean
      when: python_install_check.rc == 1
YML

ansible-playbook lxd-launch-ubuntu-24-lts.yml
lxc rm ubuntu-24-lts -f
lxc ls

Molecule

mkdir molecule-example && cd molecule-example
python3 -m venv .venv --prompt="molecule"
source ./.venv/bin/activate

pip install 'molecule[lint]'
pip install  molecule-podman
pip freeze   > requirements.txt
molecule init role 'acme.mywebapp' --driver-name podman

Modules





Namespaces


Knowledge

python3 -m venv .venv --prompt="Molecule"
# source .venv/bin/activate
# (Molecule) $
python3 -m venv .venv --prompt="Molecule"
# source .venv/bin/activate
# (Molecule) $
python -m venv .venv --prompt="Molecule"
# .venv\Scripts\activate
# (Molecule) PS>

pip install -r requirements.txt
pip freeze   > requirements.txt
[all:vars]
ansible_port=22
ansible_connection=ssh
ansible_ssh_pass=vagrant

ansible-inventory\
 -i inventories/staging/\
 --list
ansible dns_servers\
 -i inventories/staging/\
 -m ping
ansible-playbook\
 -i inventories/staging/\
 main_playbook.yml

pip install -U pip
pip install --upgrade pip
pip freeze   > requirements.txt
pip install -r requirements.txt --upgrade
pip list --outdated
pip install pip-check

pip list -o         | gawk -F ' ' 'NR>2{print$1}' | xargs pip install -U
pip list --outdated | gawk -F ' ' 'NR>2{print$1}' | xargs pip install --upgrade

References