saltstack配置管理

news2024/9/20 0:50:49

一、saltstack的SSH工作模式

  一、salt-ssh介绍

  1. salt-ssh 是 0.17.0 新引入的一个功能,不需要minion对客户端进行管理,也不需要master。
  2. salt-ssh 支持salt大部分的功能:如 grains、modules、state 等
  3. salt-ssh 没有使用ZeroMQ的通信架构,执行是串行模式
  4. salt-ssh和salt-minon可以共存,salt-minion不依赖ssh服务

类似 paramiko、pssh、ansible 这类的工具

  二、Roster使用

salt-ssh需要一个名单系统来确定哪些执行目标,Salt的0.17.0版本中salt-ssh引入roster系统

roster系统编译成了一个数据结构,包含了targets,这些targets是一个目标系统主机列表和或如连接到这些targets

配置文件如下

# target的信息
    host:        # 远端主机的ip地址或者dns域名
    user:        # 登录的用户
    passwd:      # 用户密码,如果不使用此选项,则默认使用秘钥方式
# 可选的部分
    port:        #ssh端口
    sudo:        #可以通过sudo
    tty:         # 如果设置了sudo,设置这个参数为true
    priv:        # ssh秘钥的文件路径
    timeout:     # 当建立链接时等待响应时间的秒数
    minion_opts: # minion的位置路径
    thin_dir:    # target系统的存储目录,默认是/tmp/salt-<hash>
    cmd_umask:   # 使用salt-call命令的umask值

  三、salt-ssh安装配置

        1、安装salt-ssh
yum install salt-ssh -y
        2、修改roster文件,配置要管理的机器
# tail -11  /etc/salt/roster 
linux-node1.example.com:
  host: 192.168.56.11
  user: root
  passwd: 123456
  port: 22

linux-node2.example.com:
  host: 192.168.56.12
  user: root
  passwd: 123456
  port: 22
        3、管理测试
# salt-ssh '*' test.ping -i
linux-node1.example.com:
    True
linux-node2.example.com:
    True
        4、salt-ssh命令用法
-r, –raw, –raw-shell # 直接使用shell命令
–priv #指定SSH私有密钥文件
–roster #定义使用哪个roster系统,如果定义了一个后端数据库,扫描方式,或者用户自定义的的roster系统,默认的就是/etc/salt/roster文件
–roster-file #指定roster文件
–refresh, –refresh-cache #刷新cache,如果target的grains改变会自动刷新
–max-procs #指定进程数,默认为25
-i, –ignore-host-keys #当ssh连接时,忽略keys
–passwd #指定默认密码
–key-deploy #配置keys 设置这个参数对于所有minions用来部署ssh-key认证, 这个参和–passwd结合起来使用会使初始化部署很快很方便。当调用master模块时,并加上参数 –key-deploy 即可在minions生成keys,下次开始就不使用密码
        5、salt-ssh执行状态模块
salt-ssh '*' state.sls php.init 

二、配置管理

  状态写的应该是每次执行都是对的

  一、状态间关系:实战——搭建LAMP环境

  Salt Table of Contents

  每个组件分开创建,以后可以复用(使用include)

  salt:// 所处环境的根路径

  1、基础环境
cd /srv/salt/prod
mkdir -p {apache,php,mysql}
    1、Apache
apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644

apache-service:
  service.running:
    - name: httpd
    - enable: True
    2、PHP
php-install:
  pkg.installed:
    - pkgs:
      - php
      - php-pdo
      - php-mysql

php-config:
  file.managed:
    - name: /etc/php.ini
    - source: salt://php/files/php.ini
    - user: root
    - group: root
    - mode: 644
    3、MySQL
mysql-install:
  pkg.installed:
    - pkgs:
      - mariadb
      - mariadb-server

mysql-config:
  file.managed:
    - name: /etc/my.cnf
    - source: salt://mysql/files/my.cnf
    - user: root
    - group: root
    - mode: 644

mysql-service:
  service.running:
    - name: mariadb
    - enable: True

  写完如下图(file下配置文件,是环境中拷贝过去的)

  

  2、使用远程执行操作,指定statenv
#安装php
salt -S '10.0.0.10' state.sls php.init saltenv=prod
#安装MySQL
salt -S '10.0.0.10' state.sls mysql.init saltenv=prod
  3、使用高级状态,将下面写入top file

  vim /srv/salt/base/top.sls

prod:
  'ops-k8s-master01.local.com':
    - apache.init
    - php.init
    - mysql.init

  执行高级状态

salt 'ops-k8s-master01*' state.highstate
  4、top file中使用include

  https://docs.saltstack.com/en/latest/topics/tutorials/states_pt3.html

  在prod环境创建lamp.sls使用include,将所需组件写进入,在top file引用lamp

  vim /srv/salt/prod/lamp.sls

include:
  - apache.init
  - php.init
  - mysql.init

  更改top file,vim /srv/salt/base/top.sls

prod:
  'ops-k8s-master02.local.com':
    - lamp

  执行高级状态

salt 'ops-k8s-master02*' state.highstate
  5、扩展功能:extend

  States tutorial, part 3 - Templating, Includes, Extends

  示例:扩展PHP的扩展包,更改一下lamp.sls即可

  vim /srv/salt/prod/lamp.sls

include:
  - apache.init
  - php.init
  - mysql.init
extend:
  php-install:
    pkg.installed:
      - name: php-mbstring

  执行高级状态

salt 'ops-k8s-master02*' state.highstate
  6、依赖/被依赖:require/require_in

  States tutorial, part 2 - More Complex States, Requisites

    1、我依赖谁:require

   以Apache的配置举例,更改apache/init.sls,添加依赖并改错一下配置文件

apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd1.conf
    - user: root
    - group: root
    - mode: 644

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - require:
      - pkg: apache-install
      - file: apache-config

   执行高级状态,报错信息如下

salt 'ops-k8s-master02*' state.highstate

  

  

  验证服务状态

  

    2、我被谁依赖:require_in

   以Apache的配置举例,更改apache/init.sls,添加依赖并改错一下配置文件(红色是添加的功能)

apache-install:
  pkg.installed:
    - name: httpd
    - require_in:
      - service: apache-service

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - require_in:
      - service: apache-service

apache-service:
  service.running:
    - name: httpd
    - enable: True

  执行高级状态

salt 'ops-k8s-master02*' state.highstate
  7、监听/被监听:watch/watch_in
    1、监听:watch

  reload: True 文件变动,执行重载

  以Apache的配置举例,更改apache/init.sls,添加依赖并改错一下配置文件(红色是添加的功能)

apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: apache-config

  执行高级状态

salt 'ops-k8s-master02*' state.highstate

  若文件修改错误,执行完,启动报错如下(salt返回值,会告知更改了什么)

  

  若文件修改没有问题,执行完返回的状态如下

  

    2、被监听:watch_in

   以Apache的配置举例,更改apache/init.sls,添加依赖并改错一下配置文件(红色是添加的功能)

apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - watch_in:
      - service: apache-service

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True

  执行高级状态,不报错就OK了

salt 'ops-k8s-master02*' state.highstate
   8、条件判断:unless

  unless:除非后面的条件满足,不然就执行操作

  需求:若文件存在,就不执行操作;若文件不存在就执行()

  解决:如何判断一个文件是否存在,test -f /path/xxx

  换言之即: 条件为假,就执行

    1、更改httpd的配置文件,加上用户认证

  在apache/files/httpd.conf添加下面的代码

<Directory "/var/www/html/admin">
    AllowOverride AuthConfig
    AuthType Basic
    AuthName "you guess"
    AuthUserFile /etc/httpd/conf/htpasswd_file
    Require user admin
</Directory>

  创建示例代码

mkdir -p /var/www/html/admin
echo "User Authentication">> /var/www/html/admin/index.html
    2、更改状态文件

   以Apache的配置举例,更改apache/init.sls,添加依赖并改错一下配置文件(红色是添加的功能)

apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - watch_in:
      - service: apache-service

apache-auth:
  pkg.installed:
    - name: httpd-tools
  cmd.run:
    - name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
    - unless: test -f /etc/httpd/conf/htpasswd_file 

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    3、执行高级状态,不报错就OK了
salt 'ops-k8s-master02*' state.highstate

  二、jinja模板

  saltstack模板:States tutorial, part 3 - Templating, Includes, Extends

  jinja模板:欢迎来到 Jinja2 — Jinja2 2.7 documentation

  需求:不同的主机不同的配置文件

  1、实现方式一:
    1、更改模板文件

  vim apache/files/httpd.conf 

Listen {{ IPADDR }}:{{ PORT }}
    2、更改状态文件

  vim apache/init.sls

apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - defaults:
      PORT: 80
      IPADDR: {{ grains['fqdn_ip4'][0] }}
    - watch_in:
      - service: apache-service

apache-auth:
  pkg.installed:
    - name: httpd-tools
  cmd.run:
    - name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
    - unless: test -f /etc/httpd/conf/htpasswd_file 

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    3、执行高级状态
salt 'ops-k8s-master02*' state.highstate
  2、实现方式二:
    1、更改模板文件

  vim apache/files/httpd.conf 

Listen {{ grains['fqdn_ip4'][0] }}:{{ PORT }}
    2、更改状态文件

  vim apache/init.sls

apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - defaults:
      PORT: 80
    - watch_in:
      - service: apache-service

apache-auth:
  pkg.installed:
    - name: httpd-tools
  cmd.run:
    - name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin
    - unless: test -f /etc/httpd/conf/htpasswd_file 

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    3、执行高级状态
salt 'ops-k8s-master02*' state.highstate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

向日葵好用吗?4款稳定的远程控制软件推荐。

远程控制技术现在已经被应用于很多个领域&#xff0c;像企业办公&#xff0c;远程协助&#xff0c;智能家居&#xff0c;工业控制等等。我们常常会用到的时前两种。而实现远程控制的方式也有多种&#xff0c;但是最方便高效的还是使用第三方软件。我最常使用的是向日葵&#xf…

算法.图论-并查集上

文章目录 1. 并查集介绍2. 并查集的实现2.1 实现逻辑2.2 isSameSet方法2.3 union方法(小挂大优化)2.4 find方法(路径压缩优化) 3. 并查集模板 1. 并查集介绍 定义&#xff1a; 并查集是一种树型的数据结构&#xff0c;用于处理一些不相交集合的合并及查询问题&#xff08;即所…

游戏如何对抗定制挂

近年来&#xff0c;游戏安全对抗强度相比以往更加激烈&#xff0c;具体表现在“定制挂”趋势显著。在近期收集的近万款外挂样本中&#xff0c;定制挂约占比78%&#xff0c;常见的内存修改器、变速器等通用作弊手段占比正在下降。 所谓定制挂&#xff0c;是指针对某款游戏单独开…

SPI接口通信协议浅谈成都自动化开发

沙鸥-成都 1 什么是SPI SPI是串口外设接口的缩写&#xff0c;是一种高速的、全双工、同步的通信协议&#xff0c;是微处理器与外围IC之间常用的一种通讯方式。 SPI是主从式的通信协议&#xff0c;可以一主机一从机通信&#xff0c;也可以一主机多从机通信。 2 SPI的优缺点 SPI接…

【Java版】云HIS系统源码

云HIS系统介绍 云HIS系统是一款满足基层医疗机构各类业务需要的健康云产品。该产品能帮助基层医疗机构完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能&#xff0c;还能与公卫、PACS等各类…

【STM32 HAL库】OLED显示模块

【STM32 HAL库】OLED显示模块 前言理论OLED基本参数OLED基本驱动原理OLED坐标轴 应用CubeMx配置底层函数代码高层封装函数printf显示函数 前言 本文为笔者学习 OLED 的总结&#xff0c;基于keysking的视频内容&#xff0c;如有错误&#xff0c;欢迎指正 理论 OLED基本参数 …

基于224G的超高速以太网端口1.6Tbps 1600G真的来了~

基于224G PAM4 SerDes的1.6T(更激进些的是3.2T&#xff09; 受AI智能算中心的驱动&#xff0c;基于4x112G的400G光模块&#xff0c;和基于8x112G的800G的光模块已经很成熟了&#xff0c;标志就是大家都在降本增效&#xff0c;考虑干掉功耗的DSP&#xff0c;...另外一个标志就是…

关于支持向量机的一份介绍

在这篇文章中&#xff0c;我将介绍与支持向量机有关的东西&#xff0c;我们知道支持向量机主要分两类&#xff0c;就是线性支持向量机和核支持向量机这两种&#xff08;当然还有其他的&#xff0c;如多类支持向量机、 Nu-Support Vector Regression等&#xff09;&#xff0c;因…

AIGC生图基础知识

一、引言 AIGC&#xff0c;即AI-Generated Content&#xff0c;是一种利用大型预训练模型如生成对抗网络&#xff08;GAN&#xff09;、扩散网络&#xff08;Diffusion&#xff09;和语言大模型&#xff08;Transformer&#xff09;等人工智能技术&#xff0c;通过对大量数据进…

Gradio 自定义组件

如何使用 Gradio 自定义组件&#xff0c;Gradio 前端使用 Svelte&#xff0c;后端使用的 Python。如何自定义一个组件呢&#xff1f;Gadio 提供了类似于脚手架的命令&#xff0c;可以生成需要开发组件的前后和后端代码。 创建组件 运行如下命令&#xff0c;gradio 会自动生成…

OBC充电机测试的步骤和规范

一、测试前准备 1. 确认测试环境&#xff1a;确保测试环境的温度、湿度等条件符合设备的工作要求。 2. 检查设备&#xff1a;检查OBC充电机是否完好无损&#xff0c;电源线、插头等是否连接良好&#xff0c;显示屏是否正常显示。 3. 准备工具&#xff1a;准备好电压表、电流…

ubuntu20.04安装cudnn

先登入账号 网址&#xff1a;https://developer.nvidia.com/cudnn 选择ubuntu20.04 x86_64&#xff08;Deb&#xff09; 在下载好文件的文件夹下打开终端 sudo apt-get install zlib1gsudo dpkg -i cudnn-local-repo-${distro}-8.x.x.x_1.0-1_amd64.debsudo cp /var/cudnn-lo…

大数据时代:历史、发展与未来

文章目录 引言1980年&#xff1a;大数据的先声2006年&#xff1a;云计算与大数据的诞生2008年&#xff1a;大数据的科学探索2009年&#xff1a;大数据成为行业热词2011年&#xff1a;大数据的商业价值2013年&#xff1a;世界大数据元年结语 引言 在信息技术飞速发展的今天&…

钢铁焦化水泥超低排的原因

钢铁、焦化和水泥行业实施超低排放的原因&#xff0c;朗观视觉小编建议大家可以从环境保护、产业升级、政策推动以及企业可持续发展等多个方面进行分析。 一、环境保护需求 空气质量改善&#xff1a;钢铁、焦化和水泥行业是传统的高污染行业&#xff0c;其排放的颗粒物、二氧化…

表格HTML

//test.html <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>表格与CSS分开示例</tit…

【STL】string 基础,应用与操作

string 1.string相关介绍 STL&#xff08;标准模板库&#xff09;中的string容器是C标准库提供的用于处理和操作字符串的类&#xff0c;位于头文件中。std::string提供了比传统的C风格字符串&#xff08;字符数组&#xff09;更方便和安全的功能&#xff0c;具有动态内存管理…

python脚本编译为.so速度对比

有两个好处&#xff1a; 产品代码保护&#xff0c;so文件不可读 计算能力加速&#xff0c;本质上编译过程为python -> c -> so文件&#xff0c;相当于动态语言转换为静态语言&#xff0c;程序执行能力和计算能力有所提升 编译为so文件后比原始python代码执行时间快2ms左…

VISIA 皮肤检测

费用:自费158元 不能医保报销 先清洁肌肤,然后做一个皮肤检测. 1200万像素高清摄像头,一个白光,一个偏正光,还有一个紫外光,三种模式,分析面部情况. 8张图 反应皮肤情况应用: 在医美前和医美一次修复完成后,皮肤情况对比. 数值越高 越好 斑点图: 皱纹图: 分数比较低的话,皮肤…

【计算机基础题目】二叉树的前序中序后续遍历之间相互转换 详细例子

创作日志&#xff1a; 笔试题目&#xff0c;掌握了技巧之后这道题就是 so easy~ 一、 1、已知二叉树的 前序和中序&#xff0c;可以求出后序 2、已知二叉树的 中序和后序&#xff0c;可以求出前序 3、已知二叉树的 前序和后序&#xff0c;无法求出唯一的中序 二、求法 求法是…

828华为云征文|华为云Flexus云服务器X实例之openEuler系统部署Docker Compose管理工具Dockge

828华为云征文&#xff5c;华为云Flexus云服务器X实例之openEuler系统部署Docker Compose管理工具Dockge 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、Dockge介绍2.1 Dockge简介2.2 Dockge功能…