saltshaker_api

saltshaker_plus restful api

MIT License

Stars
190
Committers
3

Saltshaker API

SaltshakersaltstackWebsaltstacksaltstackMasterSaltshakerRestful APISaltshaker_frontend

Dashboard

saltshaker.conf

  • Redis Docker
$ docker run -p 0.0.0.0:6379:6379 --name saltshaker_redis -e REDIS_PASSWORD=saltshaker -d yueyongyue/redis:08
  • RabbitMQ Docker
$ docker run -d --name saltshaker_rabbitmq -e RABBITMQ_DEFAULT_USER=saltshaker -e RABBITMQ_DEFAULT_PASS=saltshaker -p 15672:15672 -p 5672:5672 rabbitmq:3-management
  • Mysql admin admin
$ docker run -p 0.0.0.0:3306:3306 --name saltshaker_mysql -e MYSQL_ROOT_PASSWORD=123456 -d yueyongyue/saltshaker_mysql:10 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Docker

  1. API
$ docker run -d -p 0.0.0.0:9000:9000 --name saltshaker_api \
-e REDIS_HOST=192.168.10.100 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD=saltshaker \
-e MYSQL_HOST=192.168.10.100 \
-e MYSQL_PORT=3306 \
-e MYSQL_USER=root \
-e MYSQL_PASSWORD=123456 \
-e MYSQL_DB=saltshaker_plus \
-e MYSQL_CHARSET=utf8 \
-e BROKER_HOST=192.168.10.100 \
-e BROKER_PORT=5672 \
-e BROKER_USER=saltshaker \
-e BROKER_PASSWORD=saltshaker \
-e [email protected] \
-e MAIL_PASSWORD=123345 \
-e SMTP_SERVER=smtp.saltshaker.com \
-e SMTP_PORT=25 \
yueyongyue/saltshaker_api:1.12.1
  • REDIS_HOST Redis
  • REDIS_PORT Redis
  • REDIS_PASSWORD Redis
  • MYSQL_HOST Mysql
  • MYSQL_PORT Mysql
  • MYSQL_USER Mysql
  • MYSQL_PASSWORD: Mysql
  • MYSQL_DB Mysql
  • MYSQL_CHARSET Mysql
  • BROKER_HOST RabbitMQ
  • BROKER_PORT RabbitMQ
  • BROKER_USER RabbitMQ
  • BROKER_PASSWORD RabbitMQ
  • FROM_ADDR
  • MAIL_PASSWORD
  • SMTP_SERVER SMTP
  • SMTP_PORT SMTP
$ docker run -d -p 0.0.0.0:80:80 --name saltshaker_frontend \
-e DOMAIN=192.168.10.100  \
-e API_ADDR=192.168.10.100 \
-e Nginx_PROXY_PASS=192.168.10.100:9000 \
yueyongyue/saltshaker_frontend:1.12
  • DOMAIN: IP
  • API_ADDR API
  • Nginx_PROXY_PASSAPI

SaltshakerPython 3clone$HOME

  1. :

    $ cd $HOME
    $ git clone https://github.com/yueyongyue/saltshaker_api.git
    
  2. :

    $ pip install -r requirements.txt
    
  3. FLASK_APPFlask CLI,app

    $ export FLASK_APP=$Home/saltshaker_api/app.py
    
  4. saltshaker.conf

    $ mkdir /var/log/saltshaker_plus
    $ flask init
    
    
        Enter the initial administrators username [admin]: admin
        Enter the initial Administrators password: 
        Repeat for confirmation: 
        Create user table is successful
        Create role table is successful
        Create acl table is successful
        Create groups table is successful
        Create product table is successful
        Create audit_log table is successful
        Create event table is successful
        Create cmd_history table is successful
        Create host table is successful
        Create grains table is successful
        Create period_task table is successful
        Create period_result table is successful
        Create period_audit table is successful
        Create sls table is successful
        Init  role successful
        Init  role successful
        Init  role successful
        Init  role successful
        Init  role successful
        Init user successful
        Successful
    

    saltshaker_plus.sql, admin admin

    mysql> source $HOME/saltshaker_api/saltshaker_plus.sql;
    
  5. Flask App, 9000

     ```sh
     $ python $Home/saltshaker_api/app.py
     ```
    
    • Gunicorn

      $ cd $Home/saltshaker_api/ && gunicorn -c gun.py app:app
      
     ```sh
     supervisord.conf directory
     $ /usr/local/bin/supervisord -c $Home/saltshaker_api/supervisord.conf
     ```
    
  6. Celery SupervisorCelery

    $ cd $Home/saltshaker_api/ && celery -A app.celery worker --loglevel=info
    
  7. https://github.com/yueyongyue/saltshaker_frontend
    

Salt Master CentOS 7 salt master

  1. salt-api https://repo.saltstack.com/

    sudo yum install salt-api
    
  2. salt api pam

    sudo useradd admin          # admin$HOME/saltshaker_api/saltapi.confadmin
    sudo passwd admin           # admin
    
  3. saltstack api saltshaker_api/saltapi.conf mastersalt-apiRestful(8000)

    sudo cp $HOME/saltshaker_api/saltapi.conf /etc/salt/master.d/
    sudo systemctl restart salt-master
    sudo systemctl restart salt-api
    
  4. GitLabFileServer: gitfs pygit2 GitPython git, pygit2 Saltstack statepillar SLSGitLabGitLab/etc/salt/master

    fileserver_backend:
      - roots
      - git   # gitrootsgit sls,sls()
      
    gitfs_remotes:
      - http://test.com.cn:9000/root/salt_sls.git: # GitLab https://<user>:<password>@<url>
        - mountpoint: salt://  # file.managedGitLab https://docs.saltstack.com/en/latest/topics/tutorials/gitfs.html
      
    gitfs_base: master   # gitmaster
    
    pillar_roots:         
      base:
        - /srv/pillar
        
    ext_pillar:  # pillargitfs, top.sls
      - git:
        - http://test.com.cn:9000/root/salt_pillar.git
          - mountpoint: salt://
    
  5. :

    • master ()

      loop_interval: 1      # 60s, ,gitlab, 
      
    • SaltshakerWebhook, reactorevent, eventtaggitfs/updatefiilerserve

      a. mastersaltstack reactor
         reactor:
           - 'salt/netapi/hook/gitfs/*':
             - /srv/reactor/gitfs.sls
      b. /srv/reactor/gitfs.sls
          {% if 'gitfs/update' in tag %}
          gitfs_update: 
            runner.fileserver.update
          pillar_update:
            runner.git_pillar.update
          {% endif %}
      

Restful API

Restful APIWiki: https://github.com/yueyongyue/saltshaker_api/wiki

Saltshaker QQ:622806083

QQ:991904631

Saltshaker

http://project-help.cn/forum-4.htm

Job

Job

JobJobJob

0 | | | --------------------------------------------|-----------:|------------:|-----------: | | | | | |

0 | | | --------------------------------------------|-----------:|------------:|-----------: | | | | | |

Job

Jobsaltstack eventsaltshakerevent

Job

Jobpingtopkill

Minion

minion

Key

minion key keyminion

Grains

minion Grains salt masterminionGrainsGrainscelery worker

keyAcceptedminion id`Accepted```minion``salt masteminion

gitfsstatetemplatepillarwebhookgitfs

Shell

shell

State

state

Pillar

pillar(pillarsls,)

`` salt-master,master

  • salt-master
  • Master IDsalt-mastersalt-minionIDsalt-minionIDsalt-master
  • Master API salt-apihttp://192.168.10.10:8000
  • Master API salt-api
  • Master API salt-api
  • GitLabGitLabsaltstackGitLab
  • GitLab Gitlabhttp://git.saltshaker.com.cn
  • GitLab API GitLab APIGitLab4
  • GitLab TokenGitLabTokenGitLab
  • GitLab State salt statexxx/
  • GitLab Pillar salt pillarxxx/

ACL

shellACL,rebootshutdown,ShellSLS

ACL

eventsaltstack eventcelery workerjob