install-ansible
Install package ansible
[ansible-install] (https://www.server-world.info/en/note?os=Debian_12&p=ansible&f=1) [ansible-setup] ansible-debian
sudo apt -y install ansible-core
sudo apt install ansible -y
INSTALL ANSIBLE VIA PYTHON3
sudo apt install -y build-essential libssl-dev libffi-dev python3-dev python3-pip
python --version
sudo python3 -m pip install --user ansible
pip3 install ansible --user
Pip install
sudo apt install python3-pip
Install ansible avec pip
pip3 install ansible==2.14.3
INSTALL ANSIBLE
sudo apt update && sudo apt install ansible
Installation Ansible binaire
[Via-un-binaire]
git clone https://github.com/ansible/ansible.git
cd ansible
source ./hacking/env-setup
sudo apt install python-pip
pip install --user -r ./requirements.txt
echo "127.0.0.1" > ~/ansible_hosts
export ANSIBLE_INVENTORY=~/ansible_hosts
ansible all -m ping --ask-pass
Recueillir les mesures du système
Dans cette section, nous examinerons certaines des façons dont vous pouvez afficher les mesures système à partir d'hôtes distants et local.
ansible localhost -m shell -a 'df -Th'
ansible -i "192.168.200.100," -m shell -a 'df -Th'
/dev/mapper/debian--12--vg-root ext4 61G 3.7G 55G 7% /
tmpfs tmpfs 989M 124K 989M 1% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 ext2 456M 138M 293M 33% /boot
/dev/sda1 vfat 512M 6.1M 506M 2% /boot/efi
tmpfs tmpfs 198M 0 198M 0% /run/user/1000
Pour vérifier la mémoire, utilisez la commande free avec le module shell
ansible HOST_IP -m shell -a 'free -m'
ansible localhost -m shell -a 'free -m'
Transfert de fichiers vers un système distant
Les commandes ad hoc Ansible peuvent également être utilisées pour transférer des fichiers du nœud de contrôle vers le nœud géré à l'aide du module de copie en définissant les chemins source et de destination.
ansible -i "173.82.202.201," -m copy -a 'src=file1.txt dest=/home/vagrant owner=root mode=0755'
De plus, vous pouvez récupérer des fichiers à partir du nœud géré à l’aide du module de récupération affiché.
ansible -i "173.82.202.201," -m fetch -a 'src=/etc/ssh/sshd_config dest=/tmp/'
ansible 173.82.202.201 -m fetch -a 'src=/etc/ssh/sshd_config dest=/tmp/'
Comme vous l'avez peut-être remarqué, le fichier récupéré a été placé dans /tmp/173.82.202.201/etc/ssh/sshd_config. C'est parce que le module fetch a placé les fichiers dans des répertoires séparés pour chaque nom d'hôte que vous récupérez. La raison en est d'éviter qu'un fichier d'un nœud géré n'écrase un fichier d'un autre nœud géré.
Pour éviter que cela ne se produise, passez l'option flat=yes :
ansible -i "HOST_IP," -m fetch -a 'src=/etc/ssh/sshd_config dest=/tmp/ flat=yes'
Pour désinstaller un package, passez l'option state=absent
ansible "HOST_IP," -m package -a 'name=nginx state=absent'
Gestion des services sur un système distant Pour démarrer et activer un service, par exemple nginx, utilisez le module de service comme indiqué :
ansible "HOST_IP," -m service -a 'name=nginx state=started enabled=yes'
Pour arrêter un service, changez simplement l'état en arrêté.
ansible 173.82.202.201 -m service -a 'name=nginx state=stopped'
Collecte d'informations sur un système distant
ansible 173.82.202.201 -m setup
ansible "HOST_IP," -m setup
Pour avoir un aperçu de tous les modules, exécutez la commande :
ansible-doc -l
Gestion des packages sur un système distant
Vous pouvez également installer des packages à l'aide du module package. Dans l'exemple ci-dessous, nous installons le serveur Web Nginx sur le serveur Debian.
ansible -i "HOST_IP," -m package -a 'name=nginx state=present'
check version ansible
ansible --version
List hosts
sudo ansible -i hosts.yml all --list-hosts
Create folder start ansible
sudo mkdir ansible_quickstart && cd ansible_quickstart
cd ansible_quickstart
sudo touch inventory.ini
sudo nano inventory.ini
ansible-inventory -i inventory.ini --list
show hosts ansible
sudo ansible myhosts -m ping -i /etc/ansible_quickstart/inventory.ini
Start ssh coonected machine
ansible -i "192.168.231.147," all -m ping
methode ping machine
Lui passer le fichier hosts (inventory) -u le user de la machine distant et la clé privé d ela machine qui fait appel
ansible -i hosts.yml all -u vagrant -m ping --private-key jenkin-key-ecdsa
Ping the myhosts group in your inventory.
ansible myhosts -m ping -i inventory.ini
Step3 : Install package sshpass (management SSH)
Si la keys ssh n'existe pas [ssh] ssh-key
sudo apt install sshpass
Création ssh-key
ssh-keygen -t ecdsa -b 521
Ensuite ajouter la keys ssh au server distant
(copy de la keys dans le fichier authorized_keys du server distant)
ssh-copy-id mekoo@192.168.64.12
Use a command like the following to copy SSH key
ssh-copy-id -i ~/.ssh/mykey user@host
ssh-copy-id -i ~/.ssh/mykey_id mekoo@192.168.64.12
Testez une nouvelle clé ssh
ssh -i ~/.ssh/mykey user@host
donner les droits access au fichier authorized_keys ($USER)
chmod 700 .ssh
sudo chmod 640 .ssh/authorized_keys
sudo chown $USER .ssh
sudo chown $USER .ssh/authorized_keys
Connection a ma VM distant
ssh -i ~/.ssh/id_ecdsa mekoo@192.168.64.12
pour eviter de saisir la keys id_ecdsa (keys) je dois ajouter un agent
#verify si agent exist:
ssh-add -l
#Add agent: cmd :
# => response console (Agent pid 4832)
eval ssh-agent
#verify if add agent :
ssh-add -l
#Add credentials keys:
ssh-add
connection ssh server sans id_ecdsa
ssh mekoo@192.168.64.12
autre façon de se connecter via ssh/sshd_config
Host mekoo@192.168.64.12
User mekoo
Identityfile ~/.ssh/key_private (id_ecdsa)
LogLevel INFO
Compression yes
ForwardAgent yes
ForwardX11 yes
verion pip3
python3 -m pip -V
#pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12)
REMOVE PYTHON3
sudo apt-get clean
sudo apt-get autoremove --purge
sudo apt-get remove python3.11.2
sudo apt-get autoremove
sudo apt --fix-broken install
[link-ansible] ansible-lien
[doc-ansible-config] openclassrooms.com