यह लेख निम्न चीज़ों को स्वचालित करने के लिए स्क्रिप्ट प्रदान करता है:
- Raspberry Pi पर Raspbian को घर में लिखी गई bash स्क्रिप्ट के माध्यम से स्थापित करना
- Ansible के माध्यम से Raspbian का न्यूनतम कॉन्फ़िगरेशन और सुरक्षा, एक स्वनिर्मित रोल के साथ।
Raspbian की स्थापना
शुरू करने से पहले हम एक वर्किंग डायरेक्टरी में जाते हैं, उदाहरण के लिए ~/rpi
फिर microSD (उदाहरण के लिए एक अनुकूलक के माध्यम से) को अपने मशीन में डालते हैं और microSD का पथ खोजते हैं
dmesg या lsblk जैसे उपकरण इस खोज में मदद करते हैं
## Dans ces exemples la microSD a été détectée sur sdd ce qui donne comme chemin /dev/sdd## via dmesgjls42@boo:~/rpi$ sudo dmesg |tail[94655.145112] scsi host8: usb-storage 1-1.2:1.0[94656.175566] scsi 8:0:0:0: Direct-Access Generic USB SD Reader 1.00 PQ: 0 ANSI: 0 CCS[94656.176298] sd 8:0:0:0: Attached scsi generic sg4 type 0[94656.177494] sd 8:0:0:0: [sdd] 62333952 512-byte logical blocks: (31.9 GB/29.7 GiB)[94656.178010] sd 8:0:0:0: [sdd] Write Protect is off[94656.178014] sd 8:0:0:0: [sdd] Mode Sense: 4b 00 00 08[94656.178638] sd 8:0:0:0: [sdd] No Caching mode page found[94656.178647] sd 8:0:0:0: [sdd] Assuming drive cache: write through[94656.182648] sdd: sdd1 sdd2[94656.185135] sd 8:0:0:0: [sdd] Attached SCSI removable disk
## ou via lsblkjls42@boo:~/rpi$ lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT[...]sdd 8:48 1 29,7G 0 disk├─sdd1 8:49 1 43,9M 0 part└─sdd2 8:50 1 1,7G 0 partफिर हम install_raspbian.sh जैसे स्क्रिप्ट के माध्यम से उदाहरण के लिए microSD पर Raspbian इंस्टॉल कर सकते हैं
इस इंस्टॉलेशन के दौरान /mnt/sdd नाम का एक माउंट पॉइंट बनाया जाएगा
#!/bin/bash
# Ici on configure le chemin de la microSD# et le point de montage nécessaire à la bonne exécution du scriptmsd_fs="/dev/sdd"mountpoint="/mnt/sdd"
[ -d ${mountpoint} ] || mkdir ${mountpoint}[ -b ${msd_fs} ] || { echo "${msd_fs} non disponible" ; exit 1 ;}
#raspbian_version="2018-06-27-raspbian-stretch-lite.zip"raspbian_version=""if [ -z ${raspbian_version} ]then raspbian_version=$(curl -s https://downloads.raspberrypi.org/raspbian_lite_latest | \ grep "raspbian_lite"| perl -nle 'print $1 if /.*href=".*images\/.*\/([0-9].*)"/') if [ -e ${raspbian_version} ] then echo "La dernière image de Raspbian est déjà présente" else echo "Téléchargement de la dernière image de Raspbian" curl -s -L https://downloads.raspberrypi.org/raspbian_lite_latest --output ${raspbian_version} fifi
echo -e "Déploiement de ${raspbian_version} to ${msd_fs}"time unzip -p ${raspbian_version} | sudo dd of=${msd_fs} bs=4M conv=fsync && \echo -e "Montage de ${msd_fs}1 to ${mountpoint}" && \sudo mount ${msd_fs}1 ${mountpoint} && \echo -e "Activation du SSH sur Rasbpian" && \sudo touch ${mountpoint}/ssh && \echo -e "Vérification de l'activation SSH" && \sudo ls -l ${mountpoint}/ssh && \echo -e "Démontage ${msd_fs}1" && \sudo umount ${mountpoint}हम उसे निष्पादन अधिकार देते हैं और फिर root अधिकारों के साथ इसे चलाते हैं
chmod 700 install_raspbian.shsudo ./install_raspbian.shजिसका परिणाम होता है:
jls42@boo:~/rpi$ sudo ./install_raspbian.shTéléchargement de la dernière image de RaspbianDéploiement de 2018-11-13-raspbian-stretch-lite.zip to /dev/sdd0+28463 enregistrements lus0+28463 enregistrements écrits1866465280 bytes (1,9 GB, 1,7 GiB) copied, 102,911 s, 18,1 MB/s
real 1m42,923suser 0m14,203ssys 0m2,851sMontage de /dev/sdd1 to /mnt/sddActivation du SSH sur RasbpianVérification de l'activation SSH-rwxr-xr-x 1 root root 0 déc. 8 22:45 /mnt/sdd/sshDémontage /dev/sdd1इस चरण पर microSD कार्ड तैयार है, इसे सीधे अपने Raspberry Pi में डाल सकते हैं।
Raspbian का कॉन्फ़िगरेशन और सुरक्षा
एक बार microSD कार्ड डालने और Raspberry Pi SSH के माध्यम से सुलभ होने पर, हम:
- init के लिए ansible रोल प्राप्त करते हैं
- ansible playbook तैयार करते हैं
- Ansible स्क्रिप्ट चलाते हैं
ansible-rpi-init ansible रोल प्राप्त करना
इस ऑटोमेशन के लिए मैंने एक ansible रोल विकसित किया है, इसे प्राप्त करने का तरीका यहां है:
git clone git@gitlab.com:jls42/ansible-rpi-init.git roles/ansible-rpi-initजिसका परिणाम होता है:
jls42@boo:~/rpi$ git clone https://gitlab.com/jls42/ansible-rpi-init.git roles/ansible-rpi-initClonage dans 'roles/ansible-rpi-init'...remote: Enumerating objects: 17, done.remote: Counting objects: 100% (17/17), done.remote: Compressing objects: 100% (9/9), done.remote: Total 17 (delta 0), reused 0 (delta 0)Dépaquetage des objets: 100% (17/17), fait.inventory नामक इन्वेंटरी फ़ाइल बनाना
इस इन्वेंटरी उदाहरण में Raspberry Pi का IP 192.168.1.190 है
[rpi1]192.168.1.190 servername=rpi1mkpasswd के माध्यम से पासवर्ड का हैश जनरेट करना और अगली क्रिया के लिए परिणाम सहेजना
## ici le mot de passe est 'osef'jls42@boo:~$ mkpasswd --method=sha-512Mot de passe :$6$KRDQqQeZT$Bu439CILeJqHmwoxCwHXsgTJ5JEQjpZWfzCw6Deggfhip.DGScoCnUSBi.Hqnkh1OZUhTBaQees6GooW.PSLe.init_rpi.yml नामक Ansible playbook बनाना
---- name: "Initialisation du Rapsberry Pi" hosts: rpi1 remote_user: "pi" roles: - roles/ansible-rpi-init vars: rpi_password: "$6$KRDQqQeZT$Bu439CILeJqHmwoxCwHXsgTJ5JEQjpZWfzCw6Deggfhip.DGScoCnUSBi.Hqnkh1OZUhTBaQees6GooW.PSLe."यदि पहले से नहीं है तो SSH कुंजी की जोड़ी जनरेट करना
jls42@boo:~$ [ -f ~/.ssh/id_rsa.pub ] || ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/home/jls42/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/jls42/.ssh/id_rsa.Your public key has been saved in /home/jls42/.ssh/id_rsa.pub.The key fingerprint is:SHA256:qHhedMjuI0LySVAp2mpFQMozuqBwI00FZo0oHX7rkYI jls42@booThe key's randomart image is:+---[RSA 2048]----+|.=**. ||*+=o. ||+B+ . ||+++o + o ||Eo* + = S ||*=o= = . ||+=..+ o || +o.o. || ..... |+----[SHA256]-----+इस चरण पर निम्नलिखित फ़ाइलें मौजूद हैं
jls42@boo:~/rpi$ tree.├── 2018-11-13-raspbian-stretch-lite.zip├── init_rpi.yml├── install_raspbian.sh├── inventory└── roles └── ansible-rpi-init ├── defaults │ └── main.yml ├── handlers │ └── main.yml ├── LICENSE ├── meta │ └── main.yml ├── README.md ├── tasks │ └── main.yml ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml
8 directories, 13 filesinit_rpi.yml playbook के साथ Ansible चलाना
## Le mot de passe par défaut est : "raspberry"export ANSIBLE_HOST_KEY_CHECKING=Falseansible-playbook -k -b -i inventory init_rpi.ymlजिसका परिणाम है
jls42@boo:~/rpi$ ansible-playbook -k -b -i inventory init_rpi.ymlSSH password:
PLAY [Initialisation du Rapsberry Pi] ******************************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************Saturday 08 December 2018 23:46:18 +0100 (0:00:00.050) 0:00:00.050 *****ok: [192.168.1.190]
TASK [roles/ansible-rpi-init : Mise à jour raspbian] ***************************************************************************************************************************************************************************************Saturday 08 December 2018 23:46:22 +0100 (0:00:03.502) 0:00:03.553 *****changed: [192.168.1.190]
TASK [roles/ansible-rpi-init : Configuration du nom] ***************************************************************************************************************************************************************************************Saturday 08 December 2018 23:47:53 +0100 (0:01:31.114) 0:01:34.667 *****changed: [192.168.1.190]
TASK [roles/ansible-rpi-init : Ajoute le nom du serveur dans le fichier /etc/hosts] ********************************************************************************************************************************************************Saturday 08 December 2018 23:47:55 +0100 (0:00:01.944) 0:01:36.612 *****changed: [192.168.1.190]
TASK [roles/ansible-rpi-init : Ajoute la clef publique] ************************************************************************************************************************************************************************************Saturday 08 December 2018 23:47:56 +0100 (0:00:01.031) 0:01:37.643 *****changed: [192.168.1.190]
TASK [roles/ansible-rpi-init : Mise à jour du mot de passe de l'utilisateur pi] ************************************************************************************************************************************************************Saturday 08 December 2018 23:47:57 +0100 (0:00:01.183) 0:01:38.826 *****changed: [192.168.1.190]
TASK [roles/ansible-rpi-init : Redémarrage] ************************************************************************************************************************************************************************************************Saturday 08 December 2018 23:47:58 +0100 (0:00:01.249) 0:01:40.075 *****changed: [192.168.1.190]
TASK [roles/ansible-rpi-init : Attente suite au redémarrage] *******************************************************************************************************************************************************************************Saturday 08 December 2018 23:48:00 +0100 (0:00:01.714) 0:01:41.790 *****ok: [192.168.1.190]
PLAY RECAP *********************************************************************************************************************************************************************************************************************************192.168.1.190 : ok=8 changed=6 unreachable=0 failed=0
Saturday 08 December 2018 23:49:00 +0100 (0:01:00.451) 0:02:42.241 *****===============================================================================roles/ansible-rpi-init ------------------------------------------------ 158.69ssetup ------------------------------------------------------------------- 3.50s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~total ----------------------------------------------------------------- 162.19sPlaybook run took 0 days, 0 hours, 2 minutes, 42 secondsऔर हो गया:
- उपयोगकर्ता “pi” के लिए पहुँच का पासवर्ड बदल दिया गया है
- अब पासवर्ड के बिना पहुँच संभव है
- Raspberry Pi के पास servername में निर्दिष्ट नाम है (इन्वेंटरी फ़ाइल के माध्यम से)
सत्यापन
हम Raspberry Pi से कनेक्ट करते हैं यह पुष्टि करने के लिए कि पासवर्ड-रहित एक्सेस ठीक से काम कर रहा है और नामकरण सही है
jls42@boo:~/rpi$ ssh pi@192.168.1.190Linux rpi1 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l
The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in theindividual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.Last login: Sat Dec 8 22:47:59 2018 from 192.168.1.42pi@rpi1:~ $आनंद लें!
यह दस्तावेज़ fr संस्करण से hi भाषा में gpt-5-mini मॉडल का उपयोग करके अनुवादित किया गया। अधिक जानकारी के लिए अनुवाद प्रक्रिया पर देखें https://gitlab.com/jls42/ai-powered-markdown-translator