热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

saltstack1

saltstack三种运行模式:local本地、masterminion(类似于agent)、saltsshsaltstack三大功能:远程执行、配置管理、云管理saltstack

saltstack三种运行模式:

  local本地、master/minion(类似于agent)、salt ssh

saltstack三大功能:

  远程执行、配置管理、云管理

saltstack安装:1、使用官方进行yum安装 2、自建yum源进行安装

node1:

wget https://repo.saltstack.com/yum/redhat/salt-repo-2017.7-1.el6.noarch.rpm
yum install salt-repo-2017.7-1.el6.noarch.rpm
yum clean expire-cache
yum install salt-master salt-minion

 修改minion配置:/etc/salt/minion

master: 指向master节点ip

node2:

wget https://repo.saltstack.com/yum/redhat/salt-repo-2017.7-1.el6.noarch.rpm
yum install salt-repo-2017.7-1.el6.noarch.rpm
yum clean expire-cache
yum install salt-minion

 修改minion配置:/etc/salt/minion

master: 指向master节点ip
 
2、由于yum安装下载官方rpm包比较慢,所以自己自建了yum源,从https://repo.saltstack.com/yum/redhat/6/x86_64/2017.7/此处将需要以来安装的rpm包下载下来
技术分享

查看下配置文件:

[root@node1 ~]# egrep -v "^#|^$" /etc/salt/master
[root@node1 ~]# egrep -v "^#|^$" /etc/salt/minion
master: 192.168.44.134
[root@node2 ~]# egrep -v "^#|^$" /etc/salt/minion
master: 192.168.44.134

 启动两节点上的服务:

[root@node1 ~]# /etc/init.d/salt-master start
Starting salt-master daemon:                               [确定]
[root@node1 ~]# /etc/init.d/salt-minion start
Starting salt-minion:root:node1 daemon: OK
[root@node1 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1265/sshd           
tcp        0      0 0.0.0.0:4505                0.0.0.0:*                   LISTEN      2797/python2.7      
tcp        0      0 0.0.0.0:4506                0.0.0.0:*                   LISTEN      2803/python2.7   

[root@node2 ~]# /etc/init.d/salt-minion start
Starting salt-minion:root:node2 daemon: OK

 显示当前未连接上master的minion节点:

[root@node1 master]# tree
.
├── master.pem
├── master.pub
├── minions
├── minions_autosign
├── minions_denied
├── minions_pre           还没有成为master的minion节点
│   ├── node1
│   └── node2
└── minions_rejected
[root@node1 master]# salt-key 
Accepted Keys:
Denied Keys:
Unaccepted Keys:         未同意的key有两个,node1和node2上的minion
node1
node2
Rejected Keys:
将未同意的minion进行加入到master来:
salt-key -A:同意所有未同意的minion节点
salt-key -a node*:匹配模式的同意
[root@node1 master]# salt-key -a node*
The following keys are going to be accepted:
Unaccepted Keys:
node1
node2
Proceed? [n/Y] Y
Key for minion node1 accepted.
Key for minion node2 accepted.
[root@node1 master]# tree     
.
├── master.pem
├── master.pub
├── minions
│   ├── node1
│   └── node2
├── minions_autosign
├── minions_denied
├── minions_pre
└── minions_rejected

salt-key:
[root@node1 ~]# salt-key -L
Accepted Keys:
node1
node2
Denied Keys:
Unaccepted Keys:
Rejected Keys:

 1、test.ping:类似于zabbix的agent的ping,test是一个模块,ping是模块中的方法

[root@node1 ~]# salt ‘*‘ test.ping
node2:
    True
node1:
    True

 2、cmd.run:执行所有命令的模块

[root@node1 ~]# salt "*" cmd.run "uptime"
node1:
     12:04:22 up  2:32,  2 users,  load average: 0.00, 0.00, 0.00
node2:
     12:04:22 up 23:28,  1 user,  load average: 0.07, 0.02, 0.00

[root@node1 ~]# salt "*" cmd.run "df -h" 
node2:
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg_node2-lv_root
                           16G  3.5G   12G  24% /
    tmpfs                 932M   12K  932M   1% /dev/shm
    /dev/sda1             485M   32M  429M   7% /boot
node1:
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg_node1-lv_root
                           16G  2.9G   12G  20% /
    tmpfs                 932M   28K  932M   1% /dev/shm
    /dev/sda1             485M   32M  429M   7% /boot
grains:salt的一个组件,存储在minion上
  信息收集:收集minion端的信息
  匹配某个minion端执行某个命令
  匹配top file执行某些命令
[root@node1 salt]# salt ‘node1‘ grains.ls          列出所有的grains信息
node1:
    - SSDs
    - biosreleasedate
    - biosversion
    - cpu_flags
    - cpu_model
    - cpuarch
    - disks
    - dns
[root@node1 salt]# salt ‘node1‘ grains.items 列出详细的grains的key和value
显示单个item的值:
[root@node1 salt]# salt ‘node1‘ grains.item fqdn     获取某一个grains的item
node1:
    ----------
    fqdn:
        node1

 或者使用get方法:

[root@node1 salt]# salt ‘node1‘ grains.get fqdn      获取某一个grains的值
node1:
    node1

 显示minion端的操作系统:

[root@node1 salt]# salt ‘node1‘ grains.get os       获取某一个grains的值
node1:
    CentOS

 在操作系统是CentOS上执行某命令:

[root@node1 salt]# salt -G os:CentOS cmd.run ‘w‘     -G:以grains类型作匹配
node1:
     13:04:59 up  3:32,  2 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.44.1     11:42    0.00s  0.54s  0.35s /usr/bin/python
    root     pts/1    192.168.44.1     11:49   28:30   0.04s  0.04s -bash
node2:
     13:04:59 up 1 day, 29 min,  1 user,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.44.1     11:42   28:36   0.08s  0.08s -bash
[root@node1 salt]# salt "*" grains.item roles          获取roles这个item的grains信息
node1:
    ----------
    roles:
        - webserver
        - memcache
node2:
    ----------
    roles:

 grains存在于minion端的配置文件中,可以使用配置grains进行将minion打一个标签,然后通过使用grains进行匹配,执行某操作:

[root@node1 salt]# egrep -v "^$|^#" /etc/salt/minion
master: 192.168.44.134
grains:
  roles:
    - webserver
    - memcache
修改了配置文件,需要重启才能生效:
[root@node1 salt]# /etc/init.d/salt-minion restart
Stopping salt-minion:root:node1 daemon: OK
Starting salt-minion:root:node1 daemon: OK
执行操作:
[root@node1 salt]# salt -G "roles:memcache" cmd.run ‘echo "hello node1"‘
node1:
    hello node1
-G "roles:memcache":匹配刚刚在minion端配置文件中的roles定义

 当然如果不想将grains配置写在minion的配置文件中,那么可以将grains配置单独写在/etc/salt/grains中:匹配某一个minion端执行某一个命令

[root@node1 salt]# ll /etc/salt/grains,该grains需要事先进行创建
比如:
[root@node1 salt]# cat /etc/salt/grains 
roles: nginx

[root@node1 salt]# /etc/init.d/salt-minion restart                      
Stopping salt-minion:root:node1 daemon: OK
Starting salt-minion:root:node1 daemon: OK
[root@node1 salt]# salt -G "roles:nginx" cmd.run ‘echo "node1 nginx"‘
No minions matched the target. No command was sent, no jid was assigned.
ERROR: No return received

 报错原因:/etc/salt/grains 改配置文件中的key为roles与minion中的key值roles一致,导致冲突了,修改该key就可以解决

[root@node1 salt]# cat /etc/salt/grains                              
web: nginx
[root@node1 salt]# /etc/init.d/salt-minion restart                   
Stopping salt-minion:root:node1 daemon: OK
Starting salt-minion:root:node1 daemon: OK
[root@node1 salt]# salt -G "web:nginx" cmd.run ‘echo "node1 nginx"‘     
node1:
    node1 nginx

 pillar:只有在master配置文件中才会用到设置pillar

默认pillar没有打开

[root@node1 salt]# salt "*" pillar.items
node1:
    ----------
node2:
    ----------

 需要在master配置文件中开启:

[root@node1 ~]# egrep -v "^#|^$" /etc/salt/master
file_roots:
  base:
    - /srv/salt
pillar_opts: True
[root@node1 ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                               [确定]
Starting salt-master daemon:                               [确定]
[root@node1 ~]# salt "*" pillar.items

node2:
    ----------
    master:
        ----------
        __role:
            master
        allow_minion_key_revoke:

 pillar支持环境,base环境或其他,pillar也有一个入口目录,入口文件top file,top file必须放在base环境下面,打开base环境设置:

[root@node1 ~]# egrep -v "^#|^$" /etc/salt/master
pillar_roots:
  base:
    - /srv/pillar
创建该文件:[root@node1 ~]# mkdir /srv/pillar
重启master服务:[root@node1 ~]# /etc/init.d/salt-master restart
[root@node1 pillar]# cat apache.sls 
{% if grains[‘os‘] == ‘CentOS‘ %}
apache: httpd
{% elif grains[‘os‘] == ‘Debian‘ %}
apache: apache2
{% endif %}
[root@node1 pillar]# cat top.sls 
base:
  ‘*‘:
    - apache
将pillar的True再次修改为False,重启master,查看上面编写的sls文件是否已经生效
[root@node1 pillar]# salt ‘*‘ pillar.items
node2:
    ----------
    apache:
        httpd
node1:
    ----------
    apache:
        httpd
设置完了pillar,需要进行刷新才能够使用:
[root@node1 pillar]# salt ‘*‘ saltutil.refresh_pillar
node2:
    True
node1:
    True
[root@node1 pillar]# salt -I ‘apache:httpd‘ test.ping 刷新了才能调用pillar的设置,-I表示使用pillar匹配
node2:
    True
node1:
    True

技术分享

saltstack1


推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
author-avatar
馨海之洋_895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有