Ansible je jednoduchý automatizační nástroj, který automatizuje nasazování softwarových aplikací, poskytování cloudu a správu konfigurace. Je to nástroj pro orchestraci serverů, který vám pomáhá spravovat a řídit velké množství serverových uzlů z jednoho místa nazývaného 'Control Machines'. Ansible vytvořil Michael DeHaan v roce 2012 a je napsán v Pythonu a Powershell.
V tomto tutoriálu se naučíme, jak nasadit nového uživatele a povolit ověřování SSH Key-Based pomocí automatizačního nástroje Ansible. Také se naučíme, jak nakonfigurovat Ansible 'Control Machine' a také jak napsat jednoduchý ansible playbook.
Předpoklady
- 2 nebo více serverů Ubuntu 18.04
- 10.0.15.10 řídicí stroj
- 10.0.15.21 ansi01
- 10.0.15.22 ansi02
- Oprávnění uživatele root
Co uděláme?
- Nastavení Ansible Control Machine
- Definujte uživatele a klíč SSH
- Vytvořit soubor inventáře
- Vytvořit Ansible Playbook
- Nasazení serveru pomocí Příručky
- Testování
Krok 1 – Nastavení Ansible Control Machine
V tomto tutoriálu budeme používat servery Ubuntu 16.04 jako Ansible 'Machine Control' a ansible hostitele. Prvním krokem, který musíme udělat, je nastavit 'ovládací stroj'.
Spuštěním následujícího příkazu nainstalujeme python a ansible na ansible 'control machine'.
sudo apt install python ansible -y
Po dokončení instalace přidáme nového uživatele systému.
Přidáme nového uživatele s názvem 'provision', aby bylo možné provádět zřizování serveru pomocí Ansible.
Přidejte „provoz“ nového uživatele a dejte uživateli heslo.
useradd -m -s /bin/bash poskytnutí
passwd poskytnutí
Nyní přidejte uživatele 'provision' pro sudo bez hesla vytvořením nového konfiguračního souboru pod '/etc/sudoers.d/' pomocí příkazu níže.
echo -e 'provision\tALL=(ALL)\tNOPASSWD:\tALL'> /etc/sudoers.d/provision
Byl vytvořen nový uživatel a nyní může používat sudo bez hesla.
Krok 2 – Definice uživatele a klíče SSH
V tomto kroku definujeme uživatele pro ansible hostitele. Tohoto uživatele automaticky vytvoří ansible, takže nám stačí definovat uživatelské jméno, heslo a veřejný klíč ssh.
Pro každý server ('ansi01' a 'ansi02') vytvoříme nového uživatele s názvem 'provision' s heslem 'secret01'. A heslo 'secret01' musíme zašifrovat pomocí příkazu mkpasswd.
Zašifrujte heslo 'secret01' pomocí příkazu níže.
mkpasswd --method=SHA-512
ZADEJTE HESLO 'secret01'
Poznámka:
Ujistěte se, že je v systému nainstalován balíček 'whois', nebo jej můžete nainstalovat pomocí následujícího příkazu.
sudo apt install whois -y
A získáte heslo šifrované SHA-512.
Dále vygenerujeme nový klíč ssh.
Přihlaste se k uživateli 'provision' a vygenerujte klíč ssh pomocí příkazu ssh-keygen.
su - provize
ssh-keygen -t rsa
Nyní je uživatel a heslo definováno a ssh klíč byl vytvořen (umístěný v adresáři '.ssh').
Krok 3 – Vytvoření nového inventáře
V tomto kroku definujeme soubory inventáře pro všechny hostitele serveru.
Přihlaste se jako uživatel 'provision' a vytvořte nový adresář pro projekt.
su - provize
mkdir -p ansible01/
Přejděte do adresáře 'ansible01' a vytvořte nový soubor inventáře 'inventory.ini' pomocí vim.
cd ansible01/
vim inventář.ini
Zde vložte následující konfiguraci.
[webový server]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22
Uložte a ukončete.
Nyní vytvořte nový konfigurační soubor ansible 'ansible.cfg'.
vim ansible.cfg
Zde vložte následující konfiguraci.
[výchozí]
inventář =/home/provision/ansible01/inventory.ini
Uložte a ukončete.
Soubor inventáře ansible byl vytvořen a naše skripty ansible budou umístěny pod uživatelem 'provision' v adresáři 'ansible01'.
Krok 4 – Vytvoření Ansible Playbook
Ansible Playbook je sada instrukcí, které odešlete ke spuštění na jednom serveru nebo skupině hostitelů serveru. Představuje ansible-provisioning, kde je automatizace definována jako úkoly a všechny úlohy, jako je instalace balíčků, úprava souborů, budou prováděny moduly ansible.
V tomto kroku vytvoříme nový ansible playbook pro nasazení nového uživatele, nasazení klíče ssh a konfiguraci služby ssh.
Než vytvoříme nový ansible playbook, naskenujeme všechny otisky prstů serveru pomocí příkazu ssh-keyscan, jak je uvedeno níže.
ssh-keyscan 10.0.15.21>> ~/.ssh/known_hosts
ssh-keyscan 10.0.15.22>> ~/.ssh/known_hosts
Otisk těchto serverů bude uložen v souboru '.ssh/known_hosts'.
Poznámka:
Pokud máte mnoho serverových uzlů, můžete si uložit seznam hostitelů a poté ručně naskenovat otisk klíče ssh pomocí skriptu bash, jak je uvedeno níže.
for i v $(cat list-hosts.txt)
proveďte
ssh-keyscan $i>> ~/.ssh/known_hosts
hotovo
Dále vytvořte ansible playbook s názvem 'deploy-ssh.yml' pomocí vim.
vim deploy-ssh.yml
Vložit podle ansible playbook tam.
---
- hostitelé:všichni
vars:
- Provide_password:'$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB'Ug3cq/jseB/.DViC01SqDy.DViCcf5d8zlx0> collect_facts:no
remote_user:root
úkoly:
- name:Přidat nového uživatele s názvem ustanovení
user:
name=provizorní
password={{ provizorní_heslo }}
- jméno:Přidat uživatele zřízení do sudoers
kopie:
cíl:"/etc/sudoers.d/provision "
content:"provision ALL=(ALL) NOPASSWD:ALL"
- název:Nasadit klíč SSH
autorizovaný_klíč:user=provision
{ klíč lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"
stav=present
- jméno:Zakázat ověřování hesla
lineinfile:
dest=/etc/ssh/sshd_config
regexp='^PasswordAuthentication'
line="PasswordAuthentic ation no"
state=present
backup=yes
notify:
- restartujte ssh
- name:Zakázat přihlášení ke kořenu
lineinfile:
dest=/etc/ssh/sshd_config
regexp='^PermitRootLogin'
line="PermitRootLogin no"
y =y / = br = notify:
- restart ssh
handlery:
- name:restart ssh
service:
name=sshd
stav=restartovánoUložte a ukončete.
Ve skriptu příručky:
- vytváříme skript playbook 'deploy-ssh.yml', který se použije na všech serverech definovaných v souboru 'inventory.ini'.
- vytváříme ansible proměnnou 'provision_password' obsahující zašifrované heslo pro nového uživatele.
- Nastavte fakta Ansible na 'ne'.
- Definujte uživatele „root“ jako vzdáleného uživatele pro provádění automatizace úloh.
- Vytváříme nové úlohy pro přidání nového uživatele, přidáme uživatele do sudoers a nahrajeme klíč ssh.
- Vytváříme nové úlohy pro konfiguraci služeb ssh, deaktivaci přihlášení uživatele root a deaktivaci ověřování heslem. Úlohy pro konfiguraci ssh spustí obslužné rutiny 'restart ssh'.
- Vytváříme obslužnou rutinu pro restart služby ssh.
Krok 5 – Spusťte příručku
Přihlaste se k uživateli 'provision' a přejděte do adresáře 'ansible01'.
su - provize
cd ansible01/
Nyní spusťte playbook 'deploy-ssh.yml' pomocí příkazu, jak je uvedeno níže.
ansible-playbook deploy-ssh.yml --ask-pass
Zadejte heslo uživatele root a získáte výsledek, jak je uvedeno níže.
Všechny úlohy pro nasazení nového uživatele a klíče ssh byly úspěšně dokončeny.
Krok 6 – Testování
Otestujte pomocí příkazu ansible.
ansible webserver -m ping
ansible webserver -m shell -a id
Nyní obdržíte zelené zprávy, jak je uvedeno níže.
Nyní můžeme spravovat tyto servery 'ansi01' a 'ansi02' pomocí Ansible a uživatel 'provision' bude výchozím uživatelem pro Ansible.
Testování připojení k serverům
ssh 10.0.15.21
ssh 10.0.15.22
Ke každému serveru budete připojeni pomocí výchozího souboru klíče '.ssh/id_rsa' a pomocí uživatelského 'provision'.
Nasazení nového uživatele a klíče ssh pomocí ansible bylo úspěšně dokončeno.