塩スタックの研究ノート

動作モードをsaltstack:

  地元  

  マスター/手先

  塩のssh

3つの機能をsaltstack

  リモートコマンドの実行

  構成管理(状態管理)

  クラウド管理

インストール:

  マスター塩マスター

      エージェント塩、手先

塩-keyコマンド

  受け入れキー:キーを受け入れます

      拒否されたキー:拒否されたキー

      未承認キー:キーが受け付けられません

      拒否されたキー:拒否されたキー

      minion_idエージェントの保存パス:の/ etc /塩/ minion_id

   

すべて受け入れる:塩キー-A -y

表示結果:塩キー-L

単一のコマンドを実行するための塩

ホストのコマンドモジュールは、塩を実行します

塩「*」すべてのホストにpingをtest.ping。

    cmd.run「ホスト名」を実行します

          state.highstateマスター同期ステータス

          state.highstateテスト= Trueの同期テスト文法の前に

      -Eは、定期的に使用することができますホスト上で実行されます。

      リストを実行するように指定-L

    塩-L 'minion1、minion2' com.run 'ホスト名'

      -Sが指定されたサブネット

        -S '192.168.1.0/24'

 

構成管理

1、環境の定義

の/ etc /塩/マスター

file_roots

  ベース:2つのスペースの基本的な環境

    - / SRV /塩/ 4空間

  DEV:開発環境

    - / SRV /塩は/ dev /サービス

    - / SRV /塩は/ dev /状態

  PROD:本番環境

    - / SRV /塩/ PROD /サービス

    - / SRV /塩/ PROD /状態

図2に示すように、入口が定義されています

すべての塩プロファイルはSLSの終わりに基づいています。

パス:/ SRV /塩/

vimのtop.sls

戻る例の定義:

ベース:

  '*':

    - apacheの

 

 

アプリケーションコンテンツの例:

apacheの-PKG:

  pkg.installed:

    - 名前:

      - httpdの

      - のmod_ssl

apacheのサービス:

  service.running:

    - 名前:httpdの

    - 有効:真

    

データシステム穀物

  最後の手先に格納されているすべてのシステム情報手先の開始時刻を集めた穀物。

塩「ホスト」は、すべての粒子の情報をgrains.ls

            バリューgrains.item OSのOSの

                        osreleaseシステムのバージョン

例:

    塩-G 'osrelease:1611年3月7日' test.ping

   

カスタム穀物

方法

 

 

の/ etc /塩/手先

 

穀物

 

  役割:

 

    - Webサーバ

 

    - memcacheの

 

  展開:datacenter4

 

  キャビネット:13

 

  cab_u:14-15

 

柱データシステムズ

端子に供給されるマスタ端末セット、手先。

pillar在saltstack中主要作用是存储和定义配置管理中需要的一些数据,比如软件版本好,用户名密码信息,它的存储格式跟Grains类似,都是yaml格式;

/etc/salt/master

#pillar_roots:

#  base:

#    - /srv/pillar

#

#ext_pillar:

#  - hiera: /etc/hiera.yaml

#  - cmd_yaml: cat /etc/salt/yaml

 

定义pillar的入口

vim /srv/pillar/top.sls

base:

  "*":

    - packages

    - services

    - command

    - isp

 

刷新pillar

salt '*' saltutil.refresh_pillar

 

master端验证

salt -I 'roles:ftpserver' cmd.run 'uptime'

 

远程执行Targeting

与minion_id相关

  Globbing(通配符)

   *  ? []都支持;

  Regex(正则)

  List(列表)

与Minion_id无关:

  Subnet/IP (子网)

  Grains

  Pillar

  Compound matchers(复合匹配)

    -C 指定

    salt -C 'I@roles:deserver and I@deployment:datacenter4' test.ping

  Node Groups(节点组)

    -N 指定

 

当在sls文件中使用正则时:

base:

  'slatstack0[^23].test.com':

    - match: pcre  #必须引入salt的pcre库;

    - apache

当在ssl文件中使用Grains时:

base:

  'os:CentOS':

    - match: grain #引入grain库

    - apache

  

salt  modules

 

https://docs.saltstack.com/en/latest/

 

salt '*' sys.list_modules  列出所有模块

salt '*' sys.list_functions grains  列出grains模块的用法

         sys.doc grains 查看grains帮助

         sys.doc grains.item  查看item帮助

         sys.doc pkg

 

service.available  服务是否可用

       .missing  包是否缺失

state.show_top  应用了哪些模块

state.show_highstate 更详细的状态

state.sls httpd  只同步某一个任务

salt 'test04' state.sls apache env=base 将base环境中的apache环境应用给test04主机;

 

salt远程执行returners

  return组件可以理解为saltstack系统对执行minion返回后的数据存储和返回给其他程序;支持多种存储方式,例如mysql;mongodb;memcache等;通过return可以对saltstack每次的操作进行记录,对以后的日志审计提供数据;

 

mysql_secure_installation 设置mysql密码;

 

配置管理states

  states是saltstack系统的配置语言,在日常韵味中需要编写大量的states文件,例如创建用户,安装软件包,管理相应配置文件;则需要编写一些states sls文件,即状态配置文件去描述和实现相应的功能;states sls 主要使用yaml语言;也可以支持使用python语言;

 

配置管理状态关系

unless  主要用于cmd状态模块,仅当unless选项指向的命令;

        返回false时才执行name指向的命令,test -d /usr/local/nginx

require 我依赖某个状态,我依赖谁

  示例:

lamp-pkg-install:

  pkg.installed:

    - names:

      - httpd

      - php

      -php-mysql

httpd-files:

  file.managed:

    - name: /etc/httpd/conf/httpd.conf

    - source: salt://files/httpd.conf

    - require:

      - pkg: lamp-pkg-install

httpd-service:

  server.running:

    - name : httpd

    - enable: True

    - reload: True  (如果不写则是restart)

    - require:

      - file: httpd-files

    - watch:

      - file: httpd-files  只要配置文件发生改变即reload服务

 

require_in 我被某个状态依赖 谁依赖我

watch   我关注某个状态,当状态发生改变,则restart

watch_in 我被某个状态关注;

 

配置管理jinja模版

{{ 变量 }}与变量列表defaults必须一一对应;

 

vim httpd.conf

Listen {{ IP }}:{{ PORT }}

 

httpd-files:

  file.managed:

    - name: /etc/httpd/conf/httpd.conf

    - source: salt://files/httpd.conf

    - template: jinja  #必须要告诉它是jinja模版

    - require:

      - pkg: lamp-pkg-install

    - defaults:

      IP: {{ grains['fqdn_ip4'][0] }}

      PORT: 7777

 

 

おすすめ

転載: www.cnblogs.com/zhangzhide/p/11707913.html