企业实战--saltstack自动化运维(saltstack远程执行、使用sls文件安装配置httpd)

一、远程执行shell命令方式

Salt命令由三个主要部分构成:

salt '<target>' <function> [arguments]
target: 指定哪些minion, 默认的规则是使用glob匹配minion id. 

匹配所有主机

# salt '*' test.ping

Targets也可以使用正则表达式:

# salt -E 'server[1-3]' test.ping

Targets也可以指定列表:

# salt -L 'server2,server3' test.ping

注意当执行的函数有参数时,需要引号(单双都可以)引起来:

[root@server1 minions]# salt -E 'server[1-4]' cmd.run 'df -h'
server3:
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root   17G  1.2G   16G   8% /
    devtmpfs               484M     0  484M   0% /dev
    tmpfs                  496M   80K  496M   1% /dev/shm
    tmpfs                  496M  6.7M  489M   2% /run
    tmpfs                  496M     0  496M   0% /sys/fs/cgroup
    /dev/sda1             1014M  133M  882M  14% /boot
    tmpfs                  100M     0  100M   0% /run/user/0

funcation是module提供的功能,Salt内置了大量有效的functions.

# salt '*' cmd.run 'uname -a'

arguments通过空格来界定参数:

# salt 'server2' sys.doc pkg			#查看模块文档
# salt 'server2' pkg.install httpd
# salt 'server2' pkg.remove httpd

salt内置的执行模块列表:
http://docs.saltstack.cn/ref/modules/all/index.html

二、自定义远程执行模块方式

1、编辑master配置文件:

# vim /etc/salt/master
file_roots:
  base:
    - /srv/salt

2、重启master服务:

# systemctl restart salt-master

3、slatstack默认的base文件目录为/srv/salt,其中salt目录需要我们自己新建:

[root@server1 ~]# mkdir /srv/salt
[root@server1 ~]# cd /srv/salt/

4、创建模块目录:

# mkdir /srv/salt/_modules

5、编写模块文件:

# vim /srv/salt/_modules/mydisk.py
def df():
    return __salt__['cmd.run']('df -h')

以上文件表示定义了一个名为mydisk的模块,且模块内有一个函数df,函数的作用是运行df -h命令。
6、同步模块:

[root@server1 _modules]# salt '*' saltutil.sync_modules
server2:
    - modules.mydisk
server3:
    - modules.mydisk

同步后salt-master会将模块信息发送到指定的salt-minion,salt-minion将信息保存到/var/cache/salt/minion/目录下:

7、调用模块:

[root@server1 _modules]# salt '*' mydisk.df

三、sls文件方式

查看配置文件可以看出slatstack默认的base文件目录为/srv/salt,其中salt目录需要我们自己新建:

[root@server1 ~]# mkdir /srv/salt
[root@server1 ~]# cd /srv/salt/

1、sls文件概念

Salt 状态系统的核心是SLS,或者叫SaLt State 文件。

SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。
sls文件命名:

sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。
使用子目录来做组织是个很好的选择。
init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以apache/init.sls就是表示apache.
如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls
被忽略,apache.sls将被用来表示 apache.

2、编辑的文件使用yaml语法:

规则一: 缩进 Salt需要每个缩进级别由两个空格组成,不要使用tabs。
规则二: 冒号 字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。 my_key: my_value
规则三: 短横杠
想要表示列表项,使用一个短横杠加一个空格。

    list_value_one
    list_value_two

3、编写一个install。sls

[root@server1 salt]# vim install.sls 
[root@server1 salt]# cat install.sls 
apache:
  pkg.installed:
    - pkgs:
      - httpd
      - wget
      - php

执行sls文件

[root@server1 salt]# salt server3 state.sls install

注意不用写sls后缀,再执行一次salt server3 state.sls install命令时状态将不会改变,这里与ansible类似
在这里插入图片描述

4、使用top。sls文件

如果我们想要在不同的节点安装不一样的包,可以用以下这种方式实现:

[root@server1 salt]# vim apache.sls 
[root@server1 salt]# cat apache.sls 
apache:
  pkg.installed:
    - pkgs:
      - httpd 
[root@server1 salt]# vim nfs.sls 
[root@server1 salt]# cat nfs.sls 
nfs:
  pkg.installed:
    - pkgs:
      - nfs-utils
[root@server1 salt]# ls
apache.sls  _modules  nfs.sls

现在我们要求在server2安装apache文件,在server3安装nfs文件,原来的方法是分两次指定节点执行指定文件,也可以使用top文件的方式:

[root@server1 salt]# vim top.sls
[root@server1 salt]# cat top.sls 
base:
  'server2':
    - apache
  'server3':
    - nfs

执行top文件:

[root@server1 salt]# salt '*' state.highstate

在这里插入图片描述在这里插入图片描述

5、利用子目录避免base目录雍总

使用子目录来做组织:

[root@server1 salt]# ls
apache.sls  _modules  nfs.sls  top.sls
[root@server1 salt]# mkdir apache
[root@server1 salt]# mkdir nfs
[root@server1 salt]# mv apache.sls apache
[root@server1 salt]# mv nfs.sls nfs
[root@server1 salt]# ls
apache  _modules  nfs  top.sls

这时目录已经发生变化,我们现在需要调用apahce目录下的apache.sls文件时需要使用以下方式:

[root@server1 salt]# salt server2 state.sls apache.apache

注意:同样sls后缀不需要加。

修改top文件就需要这么写:

[root@server1 salt]# vim top.sls 
[root@server1 salt]# cat top.sls 
base:
  'server2':
    - apache.apache
  'server3':
    - nfs.nfs
[root@server1 salt]# salt '*' state.highstate

6、使用入口文件init.sls

也可以使用入口文件init.sls:

[root@server1 salt]# cd apache/
[root@server1 apache]# mv install.sls init.sls

当有入口文件时,我们不需要再指定文件,只需指定目录名称即可:

[root@server1 salt]# vim top.sls 
[root@server1 salt]# cat top.sls 
base:
  'server2':
    - apache
  'server3':
    - nfs.nfs
[root@server1 salt]# salt '*' state.highstate

三、使用saltstack安装配置httpd

1、编写sls文件

[root@server1 apache]# vim init.sls 
[root@server1 apache]# cat init.sls 
apache:
  pkg.installed:
    - pkgs:
      - httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf  
    - source: salt://apache/httpd.conf  
  service.running:
    - name: httpd
    - reload: true
    - enable: true
    - watch:
      - file: apache

file.managed中的name表示的是minion端的文件路径,source表示master端的文件路径,salt://表示saltstack的base路径(即/srv/salt/)

watch:表示监控唯一性声明apache下的文件(即salt://apache/httpd.conf),当文件有更改时即重启服务。

reload :默认的触发方式为restart,我们也可以让它以reload的触发方式:

enable: true设置开即自启:
2、准备配置文件httpd.conf:

[root@server1 apache]# scp server3:/etc/httpd/conf/httpd.conf .
[root@server1 apache]# ls
httpd.conf  init.sls
[root@server1 apache]# pwd
/srv/salt/apache

3.推送

[root@server1 apache]# salt server2 state.sls apache
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你使用编译安装的 Apache HTTP Server,需要按照以下步骤进行 Zabbix Web 配置: 1. 安装 PHP。 ``` yum install php php-mysql php-gd php-xml php-bcmath php-mbstring php-ldap ``` 2. 配置 PHP。 打开 PHP 配置文件 `/etc/php.ini`,并进行以下修改: ``` max_execution_time = 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 2M date.timezone = Asia/Shanghai ``` 3. 配置 Apache。 打开 Apache 配置文件 `/usr/local/apache2/conf/httpd.conf`,并添加以下内容: ``` LoadModule php7_module modules/libphp7.so <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> ``` 4. 重启 Apache。 ``` /usr/local/apache2/bin/apachectl restart ``` 5. 下载 Zabbix Web。 ``` wget https://repo.zabbix.com/zabbix/5.4/apache/conf/zabbix.conf.php.example mv zabbix.conf.php.example /usr/local/apache2/htdocs/conf/zabbix.conf.php ``` 6. 修改 Zabbix Web 配置。 打开 Zabbix Web 配置文件 `/usr/local/apache2/htdocs/conf/zabbix.conf.php`,并进行以下修改: ``` $ZBX_SERVER = 'localhost'; $ZBX_SERVER_PORT = '10051'; $ZBX_SERVER_NAME = 'Zabbix Server'; $IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG; $IMAGE_FORMAT_ALLOWED = array(IMAGE_FORMAT_PNG, IMAGE_FORMAT_JPG, IMAGE_FORMAT_GIF); $GRAPH_ITEM_TYPE = array(GRAPH_ITEM_TYPE_SIMPLE); $ZBX_MESSAGES_ALL = true; $ZBX_MESSAGES_USERS = false; $ZBX_MESSAGES_ACK = false; $ZBX_MESSAGES_DISCOVERY = false; $ZBX_MESSAGES_API = false; $ZBX_MESSAGES_LOG = false; $ZBX_SQLBOX_EVENTS = false; $ZBX_SERVER_ENC_KEY = ''; $ZBX_SERVER_ENCRYPTION_TYPE = 0; $ZBX_SERVER_DECRYPTION_KEY = ''; ``` 7. 修改 Apache 配置。 打开 Apache 配置文件 `/usr/local/apache2/conf/httpd.conf`,并添加以下内容: ``` Alias /zabbix /usr/local/apache2/htdocs <Directory "/usr/local/apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ``` 8. 重启 Apache。 ``` /usr/local/apache2/bin/apachectl restart ``` 希望这些步骤对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值