GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Chef Server, Workstation e Chef Client su Ubuntu 18.04

Chef è uno strumento di gestione della configurazione basato su Ruby utilizzato per definire l'infrastruttura come codice. Ciò consente agli utenti di automatizzare la gestione di molti nodi e mantenere la coerenza tra quei nodi. Le ricette dichiarano lo stato desiderato per i nodi gestiti e vengono create sulla workstation di un utente utilizzando il pacchetto Chef Workstation. Le tue ricette sono distribuite tra i nodi tramite un server Chef. Un client Chef, installato su ogni nodo, ha il compito di applicare la ricetta al nodo corrispondente. Questa guida ti mostrerà come installare e configurare uno Chef Server e una Chef Workstation. Inoltre, avvieremo un nodo da gestire con Chef.

In questo tutorial imparerai:

  • Installa e configura Chef Server
  • Crea utente e organizzazione Chef
  • Installa e configura la workstation Chef
  • Configura Knife e bootstrap di un nodo client

Chef Architettura.

Requisiti e convenzioni software utilizzati

Requisiti software e convenzioni della riga di comando Linux
Categoria Requisiti, convenzioni o versione del software utilizzata
Sistema Ubuntu Linux 18.04
Software Core del server per chef, workstation per chef, client per chef, kit di sviluppo per chef
Altro Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando.
Convenzioni # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando
$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato

Installa e configura Chef Server

Il server Chef è il fulcro di interazione tra tutte le workstation e i nodi gestiti da Chef. Le modifiche apportate al codice di configurazione sulle workstation vengono inviate al server Chef e quindi estratte dal client chef di un nodo per applicare le configurazioni.

Scarica l'ultimo server Chef eseguendo il comando seguente:

# wget https://packages.chef.io/files/stable/chef-server/12.18.14/ubuntu/18.04/chef-server-core_12.18.14-1_amd64.deb

Ora installa il pacchetto del server con il seguente comando:

# dpkg -i chef-server-core_*.deb

Il server Chef include un'utilità della riga di comando denominata chef-server-ctl. Esegui chef-server-ctl per avviare i servizi del server Chef.

# chef-server-ctl reconfigure

Dopo aver configurato correttamente il server chef, vedrai il seguente messaggio e controllerai anche lo stato di esecuzione del server chef.

Chef Client finished, 493/1100 resources updated in 12 minutes 02 seconds
Chef Server Reconfigured!
root@ubuntubox1:~# chef-server-ctl status
run: bookshelf: (pid 1435) 6644s; run: log: (pid 1440) 6644s
run: nginx: (pid 1235) 6653s; run: log: (pid 1744) 6631s
run: oc_bifrost: (pid 1196) 6657s; run: log: (pid 1203) 6657s
run: oc_id: (pid 1220) 6655s; run: log: (pid 1227) 6655s
run: opscode-erchef: (pid 4376) 6432s; run: log: (pid 1508) 6644s
run: opscode-expander: (pid 1335) 6648s; run: log: (pid 1431) 6646s
run: opscode-solr4: (pid 1244) 6650s; run: log: (pid 1285) 6649s
run: postgresql: (pid 1176) 6659s; run: log: (pid 1180) 6659s
run: rabbitmq: (pid 4188) 6443s; run: log: (pid 1748) 6631s
run: redis_lb: (pid 27397) 6931s; run: log: (pid 1735) 6632s
root@ubuntubox1:~#

Crea utente e organizzazione Chef

Per collegare workstation e nodi al server Chef, crea un amministratore e un'organizzazione con chiavi private RSA associate.
Dalla home directory, crea una directory .chef in cui archiviare le chiavi.

# mkdir .chef

Usa chef-server-ctl per creare un utente. In questo esempio, modifica quanto segue in base alle tue esigenze:USER_NAME, FIRST_NAME, LAST_NAME, EMAIL e PASSWORD. Modifica USER_NAME.pem e lascia l'estensione .pem.

chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename ~/.chef/USER_NAME.pem
root@ubuntubox1:~# chef-server-ctl user-create chefadmin Chef Administrator chefadmin@@ubuntubox1.com '*******' --filename ~/.chef/chefadmin.pem

Per visualizzare l'elenco di tutti gli utenti sul tuo server Chef emetti il ​​seguente comando:

root@ubuntubox1:~# chef-server-ctl user-list
chefadmin
pivotal

Crea un'organizzazione e aggiungi l'utente creato nel passaggio precedente. Sostituisci ORG_NAME con un identificatore breve per l'organizzazione, ORG_FULL_NAME con il nome completo dell'organizzazione, USER_NAME con il nome utente creato nel passaggio precedente e ORG_NAME.pem con l'identificatore breve dell'organizzazione seguito da .pem.

chef-server-ctl org-create ORG_NAME "ORG_FULL_NAME" --association_user USER_NAME --filename ~/.chef/ORG_NAME.pem
root@ubuntubox1:~# chef-server-ctl org-create chef-on-ubuntu "Chef Infrastructure on Ubuntu 18.04" --association_user chefadmin --filename ~/.chef/chef-on-ubuntu.pem

Per visualizzare l'elenco di tutte le organizzazioni sul tuo server Chef, utilizza il comando seguente:

root@ubuntubox1:~# chef-server-ctl org-list
chef-on-ubuntu

Con il server Chef installato e le chiavi RSA generate, inizieremo a configurare la workstation Chef. La workstation è il luogo in cui verranno create tutte le principali configurazioni per i tuoi nodi.

Installa e configura la workstation Chef

La workstation Chef è dove crei e configuri qualsiasi ricetta, ricettario, attributo e altre modifiche necessarie per gestire i tuoi nodi. Sebbene questa possa essere una macchina locale che esegue qualsiasi sistema operativo, c'è qualche vantaggio nel mantenere un server remoto come workstation in modo da potervi accedere da qualsiasi luogo.

In questa sezione scaricherai e installerai il pacchetto Chef Workstation, che fornisce tutti gli strumenti inclusi anche con ChefDK, il kit di sviluppo di Chef.

Scarica l'ultima workstation Chef:

root@ubuntubox2:~# wget  https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb
--2019-06-03 13:35:51--  https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb
Resolving packages.chef.io (packages.chef.io)... 151.101.142.110
Connecting to packages.chef.io (packages.chef.io)|151.101.142.110|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 129713682 (124M) [application/x-debian-package]
Saving to: ‘chef-workstation_0.2.43-1_amd64.deb’

chef-workstation_0.2.43-1_amd64.deb       100%[=====================================================================================>] 123.70M  1.51MB/s    in 80s

2019-06-03 13:37:17 (1.55 MB/s) - ‘chef-workstation_0.2.43-1_amd64.deb’ saved [129713682/129713682]

Installa Chef Workstation:

root@ubuntubox2:~# dpkg -i chef-workstation_*.deb
Selecting previously unselected package chef-workstation.
(Reading database ... 117468 files and directories currently installed.)
Preparing to unpack chef-workstation_0.2.43-1_amd64.deb ...
Unpacking chef-workstation (0.2.43-1) ...
Setting up chef-workstation (0.2.43-1) ...

To run the experimental Chef Workstation App, use your
platform's package manager to install these dependencies:

        libgconf-2.so.4 => not found
You can then launch the App by running 'chef-workstation-app'.
The App will then be available in the system tray.

Thank you for installing Chef Workstation!
You can find some tips on getting started at https://chef.sh/

Ora dobbiamo creare il repository Chef. La directory chef-repo memorizzerà i tuoi libri di cucina Chef e altri file correlati.

# chef generate repo chef-repo

Crea una sottodirectory .chef. La sottodirectory .chef memorizzerà il file di configurazione Knife e i file .pem utilizzati per l'autenticazione della coppia di chiavi RSA con il server Chef. Sposta nella directory chef-repo:

root@ubuntubox2:~# mkdir ~/chef-repo/.chef
root@ubuntubox2:~# cd chef-repo
root@ubuntubox2:~/chef-repo#

L'autenticazione tra il server Chef e la workstation e/o i nodi viene completata con la crittografia a chiave pubblica. Ciò garantisce che il server Chef comunichi solo con macchine affidabili. In questa sezione, le chiavi private RSA, generate durante la configurazione del server Chef, verranno copiate sulla workstation per consentire la comunicazione tra il server Chef e la workstation.

Genereremo una coppia di chiavi RSA sul server della workstation. Questa coppia di chiavi verrà utilizzata per accedere al server Chef e quindi trasferire i file .pem:

root@ubuntubox2:~# ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:sR+Nloq6vsc7rX4ZmMInP3SKdk4fYEJH1iLoKNm1YMg [email protected]
The key's randomart image is:
+---[RSA 4096]----+
|.. .  o.         |
|.E+ oo. .        |
| * o.o...        |
|+ o...   o +     |
|.  .. ooS = .    |
|    +o=oo+ .     |
|     Oo+oo.      |
|    ooO.+.       |
|   o=B=*.        |
+----[SHA256]-----+
root@ubuntubox2:~#

Carica la chiave pubblica del nodo della workstation sul nodo del server Chef.

root@ubuntubox2:~# ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

root@ubuntubox2:~#

Copia i file .pem dal tuo server Chef alla tua workstation usando il comando scp.

root@ubuntubox2:~# scp [email protected]:~/.chef/*.pem ~/chef-repo/.chef/
chefadmin.pem                                                                                                                         100% 1674    27.9KB/s   00:00
chef-on-ubuntu.pem                                                                                                                    100% 1674   496.8KB/s   00:00

Conferma che i file sono stati copiati correttamente elencando il contenuto della directory .chef. I file .pem dovrebbero essere elencati.

root@ubuntubox2:~# ls ~/chef-repo/.chef
chefadmin.pem  chef-on-ubuntu.pem

Genera un nuovo ricettario Chef:

root@ubuntubox2:~# chef generate cookbook chef-first-cookbook
Hyphens are discouraged in cookbook names as they may cause problems with custom resources. See https://docs.chef.io/ctl_chef.html#chef-generate-cookbook for more information.
Generating cookbook chef-first-cookbook
- Ensuring correct cookbook file content
- Ensuring delivery configuration
- Ensuring correct delivery build cookbook content

Your cookbook is ready. Type `cd chef-first-cookbook` to enter it.

There are several commands you can run to get started locally developing and testing your cookbook.
Type `delivery local --help` to see a full list.

Why not start by writing a test? Tests for the default recipe are stored at:

test/integration/default/default_test.rb

If you'd prefer to dive right in, the default recipe can be found at:

recipes/default.rb

Genera lo chef-repo e spostati nella directory appena creata:

# chef generate app chef-repo
# cd chef-repo

Configura Knife e bootstrap di un nodo client

Crea un file di configurazione del coltello navigando nella directory ~/chef-repo/.chef e creando un file chiamato config.rb usando il tuo editor di testo preferito.

Copia la seguente configurazione nel file config.rb:


current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                'node_name'
client_key               "USER.pem"
validation_client_name   'ORG_NAME-validator'
validation_key           "ORGANIZATION-validator.pem"
chef_server_url          'https://ubuntubox1.com/organizations/ORG_NAME'
cache_type               'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path            ["#{current_dir}/../cookbooks"]

Il valore per node_name deve essere il nome utente che è stato creato sul server Chef.
Modifica USER.pem in client_key per riflettere il file .pem per l'utente chef.
Il validation_client_name deve essere l'ORG_NAME dell'organizzazione seguito da - validator.
ORGANIZATION-validator.pem nel percorso validation_key dovrebbe essere impostato su ORG_NAME seguito da -validator.pem.
Infine, chef_server_url dovrebbe essere il dominio del server Chef con /organizations/ORG_NAME aggiunto. Assicurati di sostituire ORG_NAME con il nome dell'organizzazione.

Passa alla directory chef-repo e copia i certificati SSL necessari dal server:

root@ubuntubox2:~/chef-repo/.chef# cd ..
root@ubuntubox2:~/chef-repo# knife ssl fetch
WARNING: Certificates from ubuntubox1.com will be fetched and placed in your trusted_cert
directory (/root/chef-repo/.chef/trusted_certs).

Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.

Adding certificate for ubuntubox1_com in /root/chef-repo/.chef/trusted_certs/ubuntubox1_com.crt

Conferma che config.rb sia impostato correttamente eseguendo l'elenco dei client. Questo comando dovrebbe restituire il nome del validatore.

root@ubuntubox2:~/chef-repo# knife client list
chef-on-ubuntu-validator

Il bootstrap di un nodo installa il client Chef sul nodo e convalida il nodo. Ciò consente al nodo di leggere dal server Chef, estrarre e applicare eventuali aggiornamenti di configurazione necessari rilevati dal client chef.
Dalla workstation, accedere alla directory ~/chef-repo/.chef:

# cd ~/chef-repo/.chef

Avvia il nodo client utilizzando l'utente root del nodo client o un utente con privilegi elevati:

root@ubuntubox2:~/chef-repo/.chef# knife bootstrap ubuntubox3.com -x root -P ******* --node-name chef-client-node
Creating new client for chef-client-node
Creating new node for chef-client-node
Connecting to ubuntubox3.com
ubuntubox3.com -----> Installing Chef Omnibus (-v 14)
ubuntubox3.com downloading https://omnitruck-direct.chef.io/chef/install.sh
ubuntubox3.com   to file /tmp/install.sh.2019/install.sh
ubuntubox3.com trying wget...
ubuntubox3.com ubuntu 18.04 x86_64
ubuntubox3.com Getting information for chef stable 14 for ubuntu...
ubuntubox3.com downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=14&p=ubuntu&pv=18.04&m=x86_64
ubuntubox3.com   to file /tmp/install.sh.2023/metadata.txt
ubuntubox3.com trying wget...
ubuntubox3.com sha1     ed9b1fcdaf947d9a3d60e6d196308183a082bcff
ubuntubox3.com sha256   9ddcd5ceef19c95ecc1f34bef080c23d9cb42ae8ebc69fd41dcf1c768a6a708f
ubuntubox3.com url      https://packages.chef.io/files/stable/chef/14.13.11/ubuntu/18.04/chef_14.13.11-1_amd64.deb
ubuntubox3.com version  14.13.11
ubuntubox3.com downloaded metadata file looks valid...
ubuntubox3.com downloading https://packages.chef.io/files/stable/chef/14.13.11/ubuntu/18.04/chef_14.13.11-1_amd64.deb
ubuntubox3.com   to file /tmp/install.sh.2023/chef_14.13.11-1_amd64.deb
ubuntubox3.com trying wget...
ubuntubox3.com Comparing checksum with sha256sum...
ubuntubox3.com Installing chef 14
ubuntubox3.com installing with dpkg...
ubuntubox3.com Selecting previously unselected package chef.
(Reading database ... 117468 files and directories currently installed.)
ubuntubox3.com Preparing to unpack .../chef_14.13.11-1_amd64.deb ...
ubuntubox3.com Unpacking chef (14.13.11-1) ...
ubuntubox3.com Setting up chef (14.13.11-1) ...
ubuntubox3.com Thank you for installing Chef Infra Client! For help getting started visit https://learn.chef.io
ubuntubox3.com Starting the first Chef Client run...
ubuntubox3.com Starting Chef Client, version 14.13.11
ubuntubox3.com resolving cookbooks for run list: []
ubuntubox3.com Synchronizing Cookbooks:
ubuntubox3.com Installing Cookbook Gems:
ubuntubox3.com Compiling Cookbooks...
ubuntubox3.com [2019-06-03T14:01:44+04:00] WARN: Node chef-client-node has an empty run list.
ubuntubox3.com Converging 0 resources
ubuntubox3.com
ubuntubox3.com Running handlers:
ubuntubox3.com Running handlers complete
ubuntubox3.com Chef Client finished, 0/0 resources updated in 05 seconds
Confirm that the node has been bootstrapped by listing the client nodes:
root@ubuntubox2:~/chef-repo/.chef# 

Conferma che il nodo è stato avviato correttamente elencando i nodi:

root@ubuntubox2:~/chef-repo/.chef# knife node list
chef-client-node
root@ubuntubox2:~/chef-repo/.chef# knife node show chef-client-node
Node Name:   chef-client-node
Environment: _default
FQDN:        ubuntubox3.com
IP:          192.168.1.107
Run List:
Roles:
Recipes:
Platform:    ubuntu 18.04
Tags:

Conclusione

In questo articolo dettagliato abbiamo appreso lo strumento Chef Configuration Management con la sua comprensione di base e la panoramica dei suoi componenti con le impostazioni di installazione e configurazione. Puoi saperne di più su Chef visitando il sito web di Chef ovvero https://www.chef.io/


Ubuntu
  1. Come installare server e client NTP su Ubuntu 18.04 LTS

  2. Come installare e configurare il server DHCP su Ubuntu 20.04

  3. Come installare client e server NFS su Ubuntu 20.04

  4. Installa UrBackup Server e Client su Ubuntu 20.04 - Come farlo?

  5. Installa server e client vnc su Ubuntu

Come installare ed eseguire Lynis su Ubuntu Linux

Come installare Server e Client NFS su Ubuntu

Come installare Server e Client NTP su Ubuntu

Come installare il server e il client UrBackup su Ubuntu 20.04

Come installare server e client Telnet su Ubuntu

Come installare server e client NTP su Ubuntu 20.04 LTS