153 lines
3.7 KiB
Markdown
Executable File
153 lines
3.7 KiB
Markdown
Executable File
[](http://www.agile611.com/)
|
||
|
||
# Agile611 Ansible Training
|
||
|
||
This repository contains the code examples from the configuration management tools Ansible. It uses Vagrant to demonstrate these tools in practice.
|
||
|
||
Here’s a summary of the README from the GitHub repository [agile611/startusingansible](https://github.com/agile611/startusingansible):
|
||
|
||
## Requirements
|
||
|
||
- **Ansible**: Install Ansible on your host machine.
|
||
- **Vagrant**: This repository uses a Vagrant box based on Ubuntu, and APT will be used to install Ansible.
|
||
- **Virtualbox**: It is the engine for virtualize the environment.
|
||
|
||
## Example Code
|
||
|
||
Clone the repository:
|
||
|
||
```bash
|
||
git clone https://www.github.com/agile611/startusingansible.git
|
||
```
|
||
|
||
### Initial Configuration
|
||
|
||
Start the environment, requiring four Ubuntu boxes (Ansible, Loadbalancer, Database, Webserver):
|
||
|
||
```bash
|
||
vagrant up
|
||
vagrant ssh ansible
|
||
```
|
||
Create an SSH key to connect the VMs without password:
|
||
|
||
```bash
|
||
ssh-keygen
|
||
cat /home/vagrant/.ssh/id_rsa.pub
|
||
```
|
||
|
||
Copy the public key to the VMs and set up the authorized keys:
|
||
|
||
```bash
|
||
vagrant@ansible$ ssh-copy-id vagrant@192.168.11.20
|
||
vagrant@ansible$ ssh-copy-id vagrant@192.168.11.30
|
||
vagrant@ansible$ ssh-copy-id vagrant@192.168.11.40
|
||
```
|
||
|
||
Verify SSH connection:
|
||
|
||
```bash
|
||
ssh vagrant@192.168.11.20
|
||
```
|
||
|
||
If any password is asked, the user is vagrant and the password is vagrant.
|
||
|
||
### Important Note
|
||
|
||
The configuration file priority order is as follows:
|
||
|
||
1. **ANSIBLE_CONFIG** (environment variable)
|
||
2. **ansible.cfg** (current folder)
|
||
3. **~/.ansible.cfg** (user home)
|
||
4. **/etc/ansible/ansible.cfg** (general file)
|
||
|
||
## Test the Environment
|
||
|
||
Set up Ansible Inventory on the Ansible box:
|
||
|
||
```bash
|
||
mkdir example_ansible
|
||
mkdir example_ansible/hosts
|
||
nano example_ansible/hosts/all
|
||
```
|
||
|
||
Add the following lines to `hosts/all`:
|
||
|
||
```ini
|
||
[all:vars]
|
||
ansible_python_interpreter=/usr/bin/python3.12
|
||
[database]
|
||
192.168.11.20
|
||
[loadbalancer]
|
||
192.168.11.30
|
||
[webserver]
|
||
192.168.11.40
|
||
```
|
||
|
||
Check if everything works:
|
||
|
||
```bash
|
||
cd example_ansible
|
||
ansible -i hosts -u root -m ping all
|
||
```
|
||
|
||
### Initial Configuration and First YAML File
|
||
|
||
Create the file `request.yml`:
|
||
|
||
```yaml
|
||
---
|
||
- hosts: webserver
|
||
tasks:
|
||
- name: What system are you?
|
||
command: uname -a
|
||
register: info
|
||
- name: print var
|
||
debug:
|
||
var: info
|
||
- name: print field
|
||
debug:
|
||
var: info.stdout
|
||
- name: What your name?
|
||
command: hostname
|
||
register: info
|
||
- name: Give me your name
|
||
debug:
|
||
var: info.stdout
|
||
```
|
||
|
||
Execute the playbook:
|
||
|
||
```bash
|
||
ansible-playbook -i hosts/all -u root request.yml --list-hosts --list-tasks
|
||
ansible-playbook -i hosts/all -u root request.yml
|
||
```
|
||
|
||
### Additional Examples
|
||
|
||
Various examples are available in the `examples` folder, covering different aspects of Ansible usage.
|
||
|
||
## Troubleshooting
|
||
|
||
If you encounter issues provisioning the box, you can download it directly and add it to Vagrant.
|
||
|
||
## Common networking problems
|
||
|
||
If you have proxies or VPNs running on your machine, it is possible that Vagrant is not able to provision your environment.
|
||
|
||
Please check your connectivity before.
|
||
|
||
## Support
|
||
|
||
This tutorial is released into the public domain by [Agile611](http://www.agile611.com/) under Creative Commons Attribution-NonCommercial 4.0 International.
|
||
|
||
[](https://creativecommons.org/licenses/by-nc/4.0/)
|
||
|
||
|
||
This README file was originally written by [Guillem Hernández Sola](https://www.linkedin.com/in/guillemhs/) and is likewise released into the public domain.
|
||
|
||
Please contact Agile611 for further details.
|
||
|
||
* [Agile611](http://www.agile611.com/)
|
||
* Laureà Miró 309
|
||
* 08950 Esplugues de Llobregat (Barcelona)
|