Créez un répertoire:
### Créer un répertoire de spécification de script: mkdir -p / etc / ansible / rôles / Redis / { fichiers , modèles, VARS, Tâches, par défaut, manutentionnaires} ### Contenu Introduction: VARS: stockage définition variable de tâches: une liste de toutes l'exécution des tâches principales tâches sont les étapes du répertoire .yaml trop script défini, peut être divisé en plusieurs étapes, et enfin aux mani.yaml inclure XXX.yaml l' intérieur .. par défaut: en utilisant ce paramètre , le répertoire variable par défaut gestionnaire: placer des tâches à l' intérieur après la configuration modifie la définition de « notifier » pour redémarrer le script meta: définir le rôle actuel des dépendances spéciales , d' autres documents requis dans le présent document - le comprennent *** Tout le répertoire ci - dessus doit être d' au moins un principaux fichiers .yaml dans le répertoire principal. contenu yaml classé selon la fonction d'écriture, ansible chargera automatiquement tous Manin dans tous les répertoires. yaml *** fichiers : scripts de copie de fichiers de stockage par défaut et le module appelé modèles: module modèles appelle la maladie pour trouver le fichier modèle de configuration ### cas : [root @ redis-2 Redis] # arbre . ├── par défaut │ └── principaux . YAML de fichiers │ └── principaux . YAML les gestionnaires de │ └── principaux . YAML tâches de │ └── principales . YAML ├── modèles │ ├── Redis .conf. j2 │ └── Redis .conf. j2_bak └── vars └── principale . YAML 6 répertoires, 7 fichiers
Préparation Redis profil:
Hôtes ### hôtes définis: [Web] T1 ansible_ssh_host = 10,10 . 4,209 ansible_ssh_port = 22 est ansible_ssh_user = la racine liste des paramètres d'hôtes ### peut être utilisé: ansible_ssh_host ansible_ssh_port ansible_ssh_user ansible_ssh_pass ansible_python_interpreter . = / Usr / bin / python2 6.6 .... .. ### prêts profil redis.conf (acquis auto-): cp /etc/redis.conf /etc/ansible/roles/redis/templates/redis.conf.j2
Prêt redis.yaml fichier d'entrée ansible-PlayBook:
### fichier script redis.yaml: cd / etc / ansible / vim redis.yaml - hôtes: # T1 en fonction de leurs besoins définir des hôtes ou groupes d'hôtes de remote_user: racine gather_facts: Vrai les rôles: - Redis *** de telle manière après la liste des tâches ne peuvent pas être écrites dans le même fichier, conformément à la structure hiérarchique de répertoires standard et d'écriture. ***
Toutes les étapes de script de tâches:
vim main.yaml - Nom: Système groupe Ajouter {{}} redisgroup groupe: gid = {{}} usergid name = {{}} redisgroup state = système actuel = oui - Nom: système Ajouter un utilisateur {{}} redisuser utilisateur: nom: ' {{redisuser}} ' mot de passe: " 6 $ yIKPGtAX $ acGYiPD08gIwwnwGIN1LhUc9JKaN5sMHrJX6VrBNvcrPBwDdiX4yZrzbKX5D6ndQorX35MlCmYekFlkIYc / " shell: / sbin / nologin groupe: ' {{usergid}} ' uid: ' {{useruid}} ' CREATE_HOME: True état: présent -Nom: créer Redis répertoire de base de données fichier : path = ' / data / redis_data ' state = mode répertoire = ' 0755 ' propriétaire = {{redisuser}} group = {{redisgroup}} - nom: créer le répertoire des journaux fichier : path = ' / données / logs / Redis ' state = mode répertoire = ' 0755 ' propriétaire = {{redisuser}} group = {{redisgroup}} - nom: yum installer {{pkgname}} yum : name = {{pkgname}} state = présent - nom: Définir le modèle {{}} pkgname les fichiers de configuration modèle: src = 'redis.conf.j2 ' dest = ' /etc/redis.conf ' propriétaire = {{}} redisuser group = {{}} redisgroup mode = ' 0755 ' avertir: - redémarrage Redis services - Nom: set {{pkgname}} statut du service service: name = {{item}} Etat = DEMARRE activé = oui with_items: - Redis
vars définition de la variable:
Voici la définition d'une variable pour le contenu de cette exécution de script défini, vous pouvez utiliser une variable avec le module de configuration des variables système acquiert le ansible vient, vous pouvez également utiliser leur propre définition de contenu, en fonction des besoins personnalisés peuvent pkgname: « Redis » # iotop, iftop, htop ' bindip: ' 127.0.0.1 ' bindip_eth0: " {{}} ansible_eth0.ipv4.address " MODE: ' Oui ' redislog: ' /data/logs/redis/redis.log ' datadb: ' 30 ' DATADIR: ' / données / redis_data ' redispass: ' 666666 ' maxnum: ' 1024 ' appendo:'oui ' redisuser: ' Redis de la redisgroup: « Redis de la usergid: ' 600 ' useruid: ' 600 '
modèles définis redis.conf.j2 fichier modèle:
*** section de configuration de l' application, la démonstration des variables principales et modèle dans le livre de jeux ici juste pour montrer. Les variables vars / main.yaml variable définie dans l'appelant utilisation « {{nom de la variable}} » *** *** Tâches à l' intérieur il a écrit tamplates: automatiquement après ce répertoire pour trouver *** [root @ Redis - 2 Redis] # egrep -vE ' ^ # | ^ $ ' Modèles / redis.conf.j2 la liaison}} {{bindip la liaison {{bindip_eth0 }} protégé - MODE Oui Port 6379 TCP -backlog 511 délai d' attente 0 TCP -keepalive 300 à daemonize {} {} MODE Supervisé NO PidFile / var / RUN / redis_6379.pid loglevel avis logfile {{}} redislog bases de données {{}} datadb Enregistrer 900 1 save 300 10 sauver 60 10000 arrêt -writes-sur-bgsave- erreur oui rdbcompression oui rdbchecksum oui dbfilename dump.rdb dir {{datadir}} esclave -Servir -stale- oui de données asservissent -Read- uniquement oui repl -diskless- synchronisation sans repl -diskless- synchronisation -delay 5 repl -disable-tcp- nodelay aucun esclave -priority100 requirepass {{redispass}} maxclients {{}} maxnum 1024m MaxMemory appendOnly {{}} appendo appendfilename " appendonly.aof " appendfsync everysec pas -appendfsync-on- récrire pas auto -aof-rewrite pourcentage 100 auto -aof-rewrite -Min- taille 64mb aof -load- tronquée oui lua - temps -limit 5000 slowlog -log-lente que 10000 slowlog -max-lEN 128 latence -monitor seuil 0 notifier-keyspace-événements "" hachage -max-ZipList-entrées 512 hachage -max-ZipList valeur 64 liste -max-ZipList-size - 2 liste -compress profondeur 0 set -max-IntSet-entrées 512 Zset -max-ZipList -entries 128 Zset -max-ZipList valeur 64 HLL -sparse-max-octets 3000 activerehashing oui client -output-tampon limite normale 0 0 0 client -output-limite tampon 256 esclave 64mb 60 client -output-tampon limite PubSub 32mb 8MB60 hz 10 aof oui -rewrite-incrémentielle fsync
les gestionnaires d'annuaire, lorsque le fichier de configuration a changé, les tâches informent à l'intérieur du redémarrage sur la mise en œuvre des étapes:
Remarque: une fois la tâche décrite ici pour nommer et tâches / . Modèles arrière terme des changements qui entrent dans main.yaml, description cohérente de l'appel aviser Vim main.yaml - nom: le redémarrage Redis-service -Service: nom = {{}} pkgname État = redémarré
Exécutez le script pour démarrer l'installation:
[root @ redis- 2 ansible] # ansible- PlayBook redis.yaml PLAY [t2] ******************************* ************************************************** ****************************************** TASK [Faits Gathering] *** ************************************************** ************************************************** ******* ok: [t2] tâche [Redis: groupe System Ajouter Redis] ***************************** ************************************************** **************** ok: [t2] tâche [Redis: système utilisateur Ajouter Redis] ******************** ************************************************** ************************** ok: [t2] [TASK Redis: créer Redis répertoire de base de données] ***************************************** ********************************************* ok: [t2] [TASK Redis: créer le répertoire des journaux] ****************************************** ************************************************** **** ok: [t2] TASK [Redis: yum installer Redis] ********************************* ************************************************** ***************** ok: [t2] tâche [Redis: Définir le modèle Redis les fichiers de configuration] ****************** ************************************************** ****************** ok: [t2] tâche [Redis: ensemble Redis état de service]************************************************** ******************************************* ok: [t2] => (item = Redis) LECTURE RECAP ******************************************* ************************************************** ***************************** t2: ok = 8 changé = 0 injoignable = 0 failed = 0 SKIPPED = 0 secouru = 0 ignoré = 0