This shows you the differences between two versions of the page.
|
devops:laboratoare:03 [2022/07/27 16:30] bogdan.croitoru |
devops:laboratoare:03 [2022/07/27 16:41] (current) bogdan.croitoru |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== Hands-on session 2/2 - part 2/3 ===== | ===== Hands-on session 2/2 - part 2/3 ===== | ||
| - | __on your VMs node as <your_user> in your home folder__ | + | Please check the text file on the Media Manager section. |
| - | + | ||
| - | + | ||
| - | 1. DEPLOYMENT SCRIPT | + | |
| - | -------------------- | + | |
| - | + | ||
| - | #!/usr/bin/env bash | + | |
| - | + | ||
| - | # AUTHOR - Mircea VRABIE | + | |
| - | # TARGET - Automated deployment for Ansible environment with pip | + | |
| - | # DATE - Jul 2022 | + | |
| - | # HOW TO RUN - ~$ source automated_ansible_install.sh | + | |
| - | + | ||
| - | pip3 install --user --upgrade pip | + | |
| - | pip3 install --user pytest-testinfra | + | |
| - | pip3 install ansible==2.9 | + | |
| - | + | ||
| - | echo "export PATH=\$PATH:\$HOME/.local/bin" >> ~/.bashrc | + | |
| - | source ~/.bashrc | + | |
| - | + | ||
| - | =========================================================================================================== | + | |
| - | + | ||
| - | TYPE "ansible" followed by a double <TAB> to see if ansible was installed correctly in your home folder. | + | |
| - | + | ||
| - | + | ||
| - | 2. CREATE & DISTRIBUTE ON ALL NODES SUDOERS RULE | + | |
| - | ------------------------------------------------ | + | |
| - | + | ||
| - | - Create "inventory" file with your nodes lined up in one column in your home folder, starting with the first line of list (FOR THE MOMENT). | + | |
| - | + | ||
| - | vim inventory | + | |
| - | + | ||
| - | IP_node1 | + | |
| - | IP_node2 | + | |
| - | IP_node3 | + | |
| - | + | ||
| - | --- | + | |
| - | sudo su - # Become root | + | |
| - | --- | + | |
| - | + | ||
| - | echo "<your_user> ALL=(ALL) NOPASSWD :ALL" > /etc/sudoers.d/<your_user> | + | |
| - | chmod 0440 /etc/sudoers.d/<your_user> | + | |
| - | visudo -c | + | |
| - | for i in `cat /home/<your_user>/inventory`; do scp /etc/sudoers.d/<your_user> $i:/etc/sudoers.d/; done | + | |
| - | + | ||
| - | + | ||
| - | 3. CREATE YOUR ansible USER ON REMOTE HOSTS | + | |
| - | ------------------------------------------- | + | |
| - | + | ||
| - | vim useradd.sh | + | |
| - | =========================================================================================================== | + | |
| - | #!/usr/bin/env bash | + | |
| - | useradd -m -d /home/<your_user> -s /bin/bash <your_user> && echo "<your_user>:<your_password>" | chpasswd | + | |
| - | =========================================================================================================== | + | |
| - | chmod +x useradd | + | |
| - | ./useradd | + | |
| - | for i in `cat /home/<your_user>/inventory`; do ssh root@$i 'bash -s' < useradd.sh; done | + | |
| - | + | ||
| - | + | ||
| - | 4. GENERATE AND COPY SSH KEY TO REMOTE HOSTS | + | |
| - | -------------------------------------------- | + | |
| - | + | ||
| - | --- | + | |
| - | exit # become <your_user> | + | |
| - | --- | + | |
| - | + | ||
| - | ssh-keygen -t rsa -b 4096 | + | |
| - | for i in `cat inventory`; do ssh-copy-id -i ~/.ssh/id_rsa.pub $i; done | + | |
| - | + | ||
| - | ...and check connection | + | |
| - | + | ||
| - | ssh <your_user>@<node1..3> | + | |
| - | + | ||
| - | + | ||
| - | 5. CREATE YOUR ansible.cfg | + | |
| - | -------------------------- | + | |
| - | + | ||
| - | /home/<your_user>/ansible.cfg | + | |
| - | + | ||
| - | [defaults] | + | |
| - | inventory=/home/<your_user>/inventory | + | |
| - | remote_user=<your_user> | + | |
| - | host_key_checking=False | + | |
| - | + | ||
| - | [privilege_escalation] | + | |
| - | become=True | + | |
| - | become_method=sudo | + | |
| - | become_user=root | + | |
| - | become_ask_pass=False | + | |
| - | + | ||
| - | + | ||
| - | 6. LAB | + | |
| - | ------ | + | |
| - | =================================================================================== | + | |
| - | + | ||
| - | Do not forget to define "lists" to called by ansible in "inventory" file between"[]". | + | |
| - | + | ||
| - | vim inventory | + | |
| - | + | ||
| - | [all] | + | |
| - | IP_node1 | + | |
| - | IP_node2 | + | |
| - | IP_node3 | + | |
| - | + | ||
| - | =================================================================================== | + | |
| - | + | ||
| - | ansible node1 -m ping | + | |
| - | OR | + | |
| - | ansible all -m ping | + | |
| - | + | ||
| - | # Add user | + | |
| - | + | ||
| - | openssl passwd -6 -salt xyz <your_password> - (Generate password hash for /etc/shadow) | + | |
| - | + | ||
| - | mkdir playbooks | + | |
| - | vim playbooks/add_user.yml | + | |
| - | + | ||
| - | --- | + | |
| - | - name: add_user | + | |
| - | hosts: all (IP_node1) | + | |
| - | tasks: | + | |
| - | - name: add user "<your_user1>" on all hosts | + | |
| - | user: | + | |
| - | name: <your_user1> | + | |
| - | shell: /bin/bash | + | |
| - | home: /home/<your_user1> | + | |
| - | password: $6$xyz$73Q3Z.l5kN5BNAGMmP5IKozhqw3Zhj8bqQuJy3.Wf44.I3/nkSnzPMeX6rozvFiDHgi2DIt/BOc/lt14/2PH91 | + | |
| - | generate_ssh_key: yes | + | |
| - | ssh_key_bits: 2048 | + | |
| - | ssh_key_file: .ssh/id_rsa | + | |
| - | - name: create /etc/sudoers.d/<your_user1> | + | |
| - | file: | + | |
| - | path: /etc/sudoers.d/<your_user1> | + | |
| - | state: touch | + | |
| - | - name: add sudoers rights for <your_user1> | + | |
| - | copy: | + | |
| - | content: "<your_user1> ALL=(ALL) NOPASSWD: ALL" | + | |
| - | dest: /etc/sudoers.d/<your_user1> | + | |
| - | - name: set rights for /etc/sudoers.d/<your_user1> | + | |
| - | file: | + | |
| - | path: /etc/sudoers.d/<your_user1> | + | |
| - | mode: '0440' | + | |
| - | ... | + | |
| - | + | ||
| - | + | ||
| - | ansible-playbook --syntax-check playbooks/add_user.yml | + | |
| - | ansible-playbook -v -C playbooks/add_user.yml (" '-C' - dry run") | + | |
| - | ansible-playbook -v playbooks/add_user.yml ("execute playbook") (" '-v' TO '-vvvv' ==> verbosity for debuging, usualy '-v' is enought") | + | |
| - | + | ||
| - | + | ||
| - | # Delete user with one liner | + | |
| - | ansible all (node1) -m shell -a 'userdel -r <your_user1>' | + | |
| - | + | ||