saltstack实战之配置管理-lamp自动化部署

author author     2022-09-04     730

关键词:

SaltStack实战之配置管理-LAMP自动化部署


学习 SaltStack




1. 部署思路

技术分享

  1. 将lamp分成3部分:软件包、配置文件、服务;

  2. 确认安装的软件包名、配置文件路径、服务名等;

  3. 按以上信息编写yaml文件;

2. 编写lamp.sls

[[email protected] salt]# pwd
/srv/salt
[[email protected] salt]# ls
dev  init  prod  test  top.sls
[[email protected] salt]# cat dev/lamp.sls
lamp-pkg-install:
 pkg.installed:
   - names:
     - httpd
     - php
     - php-fpm
     - mysql
     - mysql-server
     - php-mysql
     - php-pdo

apache-service:
 file.managed:
   - name: /etc/httpd/conf/httpd.conf
   - source:
     - salt://dev/files/httpd.conf
     - user: root
     - group: root
     - mode: 644
 service.running:
   - name: httpd
   - enable: True

mysql-service:
 file.managed:
   - name: /etc/my.cnf
   - source:
     - salt://dev/files/my.cnf
     - user: root
     - group: root
     - mode: 644
 service.running:
   - name: httpd
   - enable: True

php-fpm-service:
 service.running:
   - name: php-fpm
   - enable: True
[[email protected] salt]# cat top.sls
base:
 ‘*‘:
   - init.dns

dev:
 ‘node*.test.com‘:
 - lamp
[[email protected] salt]# ls dev/
files  lamp.sls
[[email protected] salt]# ls dev/files/
httpd.conf  my.cnf
[[email protected] salt]#

执行salt ‘*‘ state.highstate查看结果:

 [[email protected] salt]# salt-key -L
Accepted Keys:
master.test.com
node1.test.com
node2.test.com
Denied Keys:
Unaccepted Keys:
Rejected Keys:
[[email protected] salt]# salt ‘*‘ state.highstate
master.test.com:
----------

         ID: /etc/resolv.conf
   Function: file.managed
     Result: True
    Comment: File /etc/resolv.conf is in the correct state
    Started: 23:20:50.495770
   Duration: 23.706 ms
    Changes:  

Summary for master.test.com
------------

Succeeded: 1
Failed:    0
------------

Total states run:     1
Total run time:  23.706 ms
node1.test.com:
----------

         ID: /etc/resolv.conf
   Function: file.managed
     Result: True
    Comment: File /etc/resolv.conf is in the correct state
    Started: 15:23:33.990342
   Duration: 32.918 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: httpd
     Result: True
    Comment: Package httpd is already installed
    Started: 15:23:34.603609
   Duration: 649.913 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-pdo
     Result: True
    Comment: Package php-pdo is already installed
    Started: 15:23:35.253716
   Duration: 0.539 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-fpm
     Result: True
    Comment: Package php-fpm is already installed
    Started: 15:23:35.254347
   Duration: 0.359 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: mysql-server
     Result: True
    Comment: Package mysql-server is already installed
    Started: 15:23:35.254807
   Duration: 0.346 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-mysql
     Result: True
    Comment: Package php-mysql is already installed
    Started: 15:23:35.255233
   Duration: 0.367 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: mysql
     Result: True
    Comment: Package mysql is already installed
    Started: 15:23:35.255688
   Duration: 0.355 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php
     Result: True
    Comment: Package php is already installed
    Started: 15:23:35.256129
   Duration: 0.348 ms
    Changes:  
----------

         ID: apache-service
   Function: file.managed
       Name: /etc/httpd/conf/httpd.conf
     Result: False
    Comment: Unable to manage file: none of the specified sources were found
    Started: 15:23:35.256569
   Duration: 6.275 ms
    Changes:  
----------

         ID: apache-service
   Function: service.running
       Name: httpd
     Result: False
    Comment: Service httpd has been enabled, and is dead
    Started: 15:23:35.275736
   Duration: 230.013 ms
    Changes:  
             ----------
             httpd:
                 True
----------

         ID: mysql-service
   Function: file.managed
       Name: /etc/my.cnf
     Result: False
    Comment: Unable to manage file: none of the specified sources were found
    Started: 15:23:35.505956
   Duration: 6.35 ms
    Changes:  
----------

         ID: mysql-service
   Function: service.running
       Name: httpd
     Result: False
    Comment: Service httpd is already enabled, and is dead
    Started: 15:23:35.512412
   Duration: 134.002 ms
    Changes:  
----------

         ID: php-fpm-service
   Function: service.running
       Name: php-fpm
     Result: True
    Comment: Service php-fpm is already enabled, and is running
    Started: 15:23:35.646635
   Duration: 196.639 ms
    Changes:  
             ----------
             php-fpm:
                 True

Summary for node1.test.com
------------

Succeeded: 9 (changed=2)
Failed:    4
------------

Total states run:    13
Total run time:   1.258 s

node2.test.com:
----------

         ID: /etc/resolv.conf
   Function: file.managed
     Result: True
    Comment: File /etc/resolv.conf is in the correct state
    Started: 15:23:34.682679
   Duration: 103.617 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: httpd
     Result: True
    Comment: The following packages were installed/updated: httpd
    Started: 15:23:38.021487
   Duration: 46521.648 ms
    Changes:  
             ----------
             apr:
                 ----------
                 new:
                     1.3.9-5.el6_2
                 old:
             apr-util:
                 ----------
                 new:
                     1.3.9-3.el6_0.1
                 old:
             apr-util-ldap:
                 ----------
                 new:
                     1.3.9-3.el6_0.1
                 old:
             httpd:
                 ----------
                 new:
                     2.2.15-59.el6.centos
                 old:
             httpd-tools:
                 ----------
                 new:
                     2.2.15-59.el6.centos
                 old:
             mailcap:
                 ----------
                 new:
                     2.1.31-2.el6
                 old:
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-pdo
     Result: True
    Comment: The following packages were installed/updated: php-pdo
    Started: 15:24:24.562565
   Duration: 8749.133 ms
    Changes:  
             ----------
             php-common:
                 ----------
                 new:
                     5.3.3-49.el6
                 old:
             php-pdo:
                 ----------
                 new:
                     5.3.3-49.el6
                 old:
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-fpm
     Result: True
    Comment: The following packages were installed/updated: php-fpm
    Started: 15:24:33.336866
   Duration: 8477.529 ms
    Changes:  
             ----------
             php-fpm:
                 ----------
                 new:
                     5.3.3-49.el6
                 old:
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: mysql-server
     Result: True
    Comment: The following packages were installed/updated: mysql-server
    Started: 15:24:41.843441
   Duration: 28414.553 ms
    Changes:  
             ----------
             mysql:
                 ----------
                 new:
                     5.1.73-8.el6_8
                 old:
             mysql-libs:
                 ----------
                 new:
                     5.1.73-8.el6_8
                 old:
             mysql-server:
                 ----------
                 new:
                     5.1.73-8.el6_8
                 old:
             perl-DBD-MySQL:
                 ----------
                 new:
                     4.013-3.el6
                 old:
             perl-DBI:
                 ----------
                 new:
                     1.609-4.el6
                 old:
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php-mysql
     Result: True
    Comment: The following packages were installed/updated: php-mysql
    Started: 15:25:10.289755
   Duration: 8122.46 ms
    Changes:  
             ----------
             php-mysql:
                 ----------
                 new:
                     5.3.3-49.el6
                 old:
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: mysql
     Result: True
    Comment: Package mysql is already installed
    Started: 15:25:18.458202
   Duration: 1.519 ms
    Changes:  
----------

         ID: lamp-pkg-install
   Function: pkg.installed
       Name: php
     Result: True
    Comment: The following packages were installed/updated: php
    Started: 15:25:18.459996
   Duration: 14374.708 ms
    Changes:  
             ----------
             php:
                 ----------
                 new:
                     5.3.3-49.el6
                 old:
             php-cli:
                 ----------
                 new:
                     5.3.3-49.el6
                 old:
----------

         ID: apache-service
   Function: file.managed
       Name: /etc/httpd/conf/httpd.conf
     Result: False
    Comment: Unable to manage file: none of the specified sources were found
    Started: 15:25:32.846614
   Duration: 38.9 ms
    Changes:  
----------

         ID: apache-service
   Function: service.running
       Name: httpd
     Result: False
    Comment: Service httpd has been enabled, and is dead
    Started: 15:25:32.916084
   Duration: 674.943 ms
    Changes:  
             ----------
             httpd:
                 True
----------

         ID: mysql-service
   Function: file.managed
       Name: /etc/my.cnf
     Result: False
    Comment: Unable to manage file: none of the specified sources were found
    Started: 15:25:33.591498
   Duration: 23.162 ms
    Changes:  
----------

         ID: mysql-service
   Function: service.running
       Name: httpd
     Result: False
    Comment: Service httpd is already enabled, and is dead
    Started: 15:25:33.614954
   Duration: 357.977 ms
    Changes:  
----------

         ID: php-fpm-service
   Function: service.running
       Name: php-fpm
     Result: True
    Comment: Service php-fpm is already enabled, and is running
    Started: 15:25:33.973402
   Duration: 512.95 ms
    Changes:  
             ----------
             php-fpm:
                 True

Summary for node2.test.com
------------

Succeeded: 9 (changed=8)
Failed:    4
------------

Total states run:    13
Total run time: 116.373 s
ERROR: Minions returned with non-zero exit code
[[email protected] salt]#

上面结果中有报错 
Unable to manage file: none of the specified sources were found

需要修改路径,把dev去掉。因为在top.sls配置文件中,lamp是定义在dev下面的,因此salt://应该是从dev目录下为起始的。

- salt://files/httpd.conf


本文出自 “ygqygq2” 博客,请务必保留此出处http://ygqygq2.blog.51cto.com/1009869/1936947

saltstack实战之配置管理-状态间关系

SaltStack实战之配置管理-状态间关系学习 SaltStackSaltStack实战之配置管理-状态间关系1.状态相关模块1.1pkg1.2file1.3service1.4requisites2.实际应用1.状态相关模块1.1pkg状态模块:pkg 功能:管理软件包状态 常用方法:pkg.installed#... 查看详情

saltstack实战之配置管理-jinja2模板

SaltStack实战之配置管理-Jinja2模板学习 SaltStackSaltStack实战之配置管理-Jinja2模板1.Saltyaml配置文件使用Jinja2模板介绍1.1File状态使用template参数1.2模板文件里面变量使用{{名称}}1.3变量列表2.实战应用1.Saltyaml配置文件使用Jinja2模板... 查看详情

saltstack实战之saltstack快速入门

SaltStack实战之SaltStack快速入门1.SaltStack介绍1.1SaltStack常用网址1.2SaltStack运行方式1.3SaltStack三大功能2.SaltStack部署2.1SaltStackmaster配置2.2SaltStackminion配置2.3SaltStack认证2.4saltsatck远程执行2.5saltsatck配置管理1.SaltStack介绍Sa 查看详情

自动化运维saltstack系列之配置管理系统模块

架构图Saltstack配置管理大型web架构网站其实并不是很难,最主要是合理管理各功能模块之间依赖关系,尽量独立各功能模块,让每一个系统功能都可以被业务引用。650)this.width=650;"title="1476016541399068.png"alt="saltstack.png"src="http://www.l... 查看详情

运维自动化之saltstack配置管理

配置管理--终于到重点了 说到配置管理,不得不说一下下面谈到的几个概念,理解他们很重要。Salt是通过一个文件top.sls管理minion端的状态的。这个文件top.sls在这里叫做入口文件,此文件里记录了一个或者几个环境,在某一... 查看详情

 saltstack实战

一:saltstack简介 部署的工作,不能只用手来做了,我们需要用工具来完成,工具化和标准化是相辅相成的,工具化让线上运行的东西更标准 Saltstack是比较新的自动化工具,是python开发的,也提供了api,saltstack有三大功能... 查看详情

saltstack实战之数据系统-grains

SaltStack实战之数据系统-Grains学习 SaltStackSaltStack实战之数据系统-Grains1.Grains应用场景2.Grains应用示例1.Grains应用场景Grains可以在state系统中使用,用于配置管理模块。Grains可以在target中使用,用来匹配minion,比如匹配操作系统... 查看详情

自动化之saltstack

...以用于编配,远程执行,配置管理等等.官网地址:http://docs.saltstack.cn/index.html Salt是:一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在 查看详情

自动化运维saltstack系列之配置管理业务模块

业务模块 业务模块要尽量和系统模块区分开,系统模块要做到随时能被业务模块所调用;特别是在多种业务模式共存的环境中,我们要使每个业务模块独立一个prod环境,方便统一管理而不影响其他业务。PHP模块[[email prot... 查看详情

自动化运维saltstack系列之states配置管理和jinja模板的使用

States配置管理States是Saltstack中的配置语言,在日常进行配置管理时需要编写大量的StatesSLS文件,而编写这些SLS文件的一般步骤也就是我们平时手动配置一台服务器的步骤:首先安装源码包,然后管理一个配置文件,最后再保证这... 查看详情

saltstack实战之远程执行-targeting

SaltStack实战之远程执行-Targeting学习 SaltStackSaltStack实战之远程执行-Targeting1.minionid配置2.Targeting分类SaltStack远程执行组成部分:目标(Targeting)模块(Module)返回(Returnners)1.minionid配置minionid可以定义在minion配置文件中,如果... 查看详情

saltstack实战之数据系统grainsvspillar

SaltStack实战之数据系统GrainsVSPillar学习 SaltStackSaltStack实战之数据系统GrainsVSPillar名称存储位置数据类型数据采集更新方式应用GrainsMinion端静态数据Minion启动时采集,也可以使用saltutil.sync_grains进行刷新。存在Minion基本数据。比... 查看详情

saltstack实战之数据系统-pillar

SaltStack实战之数据系统-Pillar学习 SaltStackSaltStack实战之数据系统-Pillar1.Pillar简介和应用场景2.Pillar应用示例1.Pillar简介和应用场景Pillar是Salt用来分发全局变量到所有minions的一个接口。Pillardata的管理类似于SaltStateTree。 Salt0.... 查看详情

自动化运维三贱客之saltstack安装(代码片段)

SaltStack简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。通过... 查看详情

saltstack之配置管理(代码片段)

SaltStack之配置管理文章目录SaltStack之配置管理YAML语言用SaltStack配置一个nginx实例在Master上部署sls配置文件并执行在Minion1上检查topfiletopfile介绍高级状态highstate的使用YAML语言YAML是一种直观的能够被电脑识别的数据序列化格式,... 查看详情

saltstack之自动化配置

SaltStackhttp://www.saltstack.cn/中国saltstack用户组http://repo.saltstack.com仓库https://saltstack.com/官网saltAirhttp://list.youku.com/albumlist/show?id=20177676&ascending=1&page=1工具化  标准化&n 查看详情

saltstack远程控制配置管理与实战介绍

说明:    本文档仅写了一些基础的SaltStack操作命令,但这些命令也是工作中经常会用到的,像grains、pillar、jinja2功能更强大,但如果不是大批量升级改造的话一般不需用到。更高级的操作请参阅书籍。  1.s... 查看详情

saltstack远程控制配置管理与实战介绍

说明:    本文档仅写了一些基础的SaltStack操作命令,但这些命令也是工作中经常会用到的,像grains、pillar、jinja2功能更强大,但如果不是大批量升级改造的话一般不需用到。更高级的操作请参阅书籍。  1.s... 查看详情