Aller au contenu principal

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

url-video

ansible-officiel-doc

[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