Salt - gestionare states si pillar prin git
Postat la Fri 03 January 2020 in tutoriale
O optiune foarte utila oferita de Salt este includerea fisierelor de configurare (states) si a secretelor (pillar) din repository git (sau gitfs).
Pentru asta trebuie instalata libraria pygit2 sau GitPython, prima fiind preferata in cazul ca exista pe server.
Pe sisteleme CentOS 7.x aceasta se instaleaza:
yum install python-pygit2
Activarea backend-ului pentru states se face prin includerea in fiserul de configurare al master-ului:
fileserver_backend:
- root
- gitfs
Repository-urile se adauga fie din cele publice (ca de exemplu formulele salt de pe Github) ori private folosind protocoalele git://, https://, file://, ssh://
gitfs_remotes:
- git@github.com:user/repo.git
- ssh://user@domain.tld/path/to/repo.git
Optiuni globale pe care se pot seta (mai multe aici):
- gitfs_user - userul utilizat la conectare
- gitfs_password - parola de conectare
- gitfs_insecure_auth
- gitfs_pubkey - cheia publica ssh
- gitfs_privkey - cheia privata ssh
- gitfs_passphrase - parola cheii private
- gitfs_update_interval - intervalul la care se preiau modificarile din repo (in secunde)
- gitfs_root - directorul folosit din repo
Sau aceste optiuni pot fi specificate la nivel de repo adaugat:
gitfs_remotes:
- http://foo.com/baz.git:
- root: salt/states
- user: joe
- password: mysupersecretpassword
- insecure_auth: True
- git@git.lxd:cristi/salt-states.git:
- pubkey: /root/.ssh/id_rsa.pub
- privkey: /root/.ssh/id_rsa
- update_interval: 30
Actualizarea manuala a fisierelor din repo poate fi facuta:
salt-run fileserver.update
salt-run fileserver.update backend=roots,git
Pentru pillar configurarea de face la ext_pillar
ext_pillar:
- git:
# Use 'prod' instead of the branch name 'production' as the environment
- production https://gitserver/git-pillar.git:
- env: prod
# Use 'dev' instead of the branch name 'develop' as the environment
- develop https://gitserver/git-pillar.git:
- env: dev
# No per-remote config parameters (and no trailing colon), 'qa' will
# be used as the environment
- qa https://gitserver/git-pillar.git
# SSH key authentication
- master git@other-git-server:pillardata-ssh.git:
# Pillar SLS files will be read from the 'pillar' subdirectory in
# this repository
- root: pillar
- privkey: /path/to/key
- pubkey: /path/to/key.pub
- passphrase: CorrectHorseBatteryStaple
# HTTPS authentication
- master https://other-git-server/pillardata-https.git:
- user: git
- password: CorrectHorseBatteryStap
Cerinta este ca fiecare branch/tag din repo trebuie sa aibe asociat un environment in salt. Branch-ul master este asociat environment-ului base.
Actualizarea manuala a informatiilor din repo pentru pillar se poate face cu comanda:
salt-run git_pillar.update
Putem verifica preluarea modificarilor prin listarea datelor din pillar:
salt "consul-server.*" pillar.items
consul-server.lxd:
----------
consul:
----------
server:
True
servers:
- consul-server.lxd
- consul-server2.lxd
- consul-server3.lxd
tokens:
----------
agent:
1ae89bc3-a33e-238e-371f-fdd5c3e2577b
service:
----------
web:
aaaa
environment:
lxd
master_key:
123456
roles:
- base
- salt-minion
Articolul face parte din seria Aplicatii pentru managementul configuratiilor.