saltstack 自动化运维神器(二)

文件同步:

其实在做openstack的运维对一些文件的同步其实是很繁琐。有一个配置项或者一行代码的源码文件进行同步。那么现在我们就开始介绍saltstack的文件同步功能

环境说明:操作系统版本:rhel6.5x64

1、master配置同步根目录

在开始saltstack的配置管理之前,要首先指定saltstack所有状态文件的根目录,在master上做如下操作

## 首先修改master的配置文件,指定根目录,注意缩进全部使用两个空格来代替Tab(python规范)## 确定指定的目录是否存在,如果不存在,需要手动来创建目录

[[email protected] ~]# vim /etc/salt/master 
file_roots:
  base:
    - /srv/salt
  dev:
    - /srv/salt/dev/

[[email protected] ~]# mkdir -p /srv/salt/dev
[[email protected] ~]# ls -ld /srv/salt/dev
drwxr-xr-x 2 root root 4096 Feb  3 21:49 /srv/salt/dev

重启master服务

[[email protected] ~]# service salt-master restart
Stopping salt-master daemon:                               [  OK  ]
Starting salt-master daemon:                               [  OK  ]

2、介绍cp.get_file

首先介绍cp.get_file,用来从master端下载文件到minion的指定目录下,如下

## 在master上创建测试用的文件

[[email protected] ~]# echo ‘This is test file with saltstack module to  cp.get_file‘ >/opt/getfile.txt        
[[email protected] ~]# cat /opt/getfile.txt 
This is test file with saltstack module to  cp.get_file

将文件拷贝到master的同步根目录下

[[email protected] ~]# cp /opt/getfile.txt /srv/salt/

在master上执行文件下发

[[email protected] ~]# salt ‘computer3‘ cp.get_file salt://getfile.txt /tmp/getfile.txt  
computer3:
    /tmp/getfile.txt

登录到computer3上查看同步情况

[[email protected] ~]# cat /tmp/getfile.txt 
This is test file with saltstack module to  cp.get_file

分发文件的一些属性:

(1)压缩  gzip

使用gzip的方式进行压缩,数字越大,压缩率就越高,9代表最大的压缩率

[[email protected] ~]# salt ‘computer8‘ cp.get_file salt://getfile.txt /tmp/getfile.txt gzip=9
computer8:
    /tmp/getfile.txt

(2)创建目录 makedirs(当分发的位置在目标主机上不存在时,自动创建该目录)

[[email protected] ~]# salt ‘computer8‘ cp.get_file salt://getfile.txt /tmp/srv/getfile.txt makedirs=True
computer8:
    /tmp/srv/getfile.txt

[[email protected] opt]# ll /tmp/srv/getfile.txt 
-rw-r--r-- 1 root root 56 Feb  3 22:14 /tmp/srv/getfile.txt

3、grains

先介绍一下grains,这个接口的作用是在minion端的minion服务启动时,调用这个接口,收集minion端的信息,这些信息数据可以在salt的其他模块中直接使用,需要注意的是,这个接口只在minion端的minion服务启动时被调用一次,所以收集的数据是静态的,不会改变的,除非你重启了minion端的服务

grains的基本用法:

[[email protected] ~]# salt ‘computer3‘ grains.ls
computer3:
    - biosreleasedate
    - biosversion
    - cpu_flags
    - cpu_model
    - cpuarch
    - defaultencoding
    - defaultlanguage
    - domain
    - fqdn
    - fqdn_ip4
    - fqdn_ip6
    - gpus
    - host
    - hwaddr_interfaces
    - id
    - ip_interfaces
    - ipv4
    - ipv6
    - kernel
    - kernelrelease
    - localhost
    - manufacturer
    - master
    - mem_total
    - nodename
    - num_cpus
    - num_gpus
    - os
    - os_family
    - osarch
    - oscodename
    - osfinger
    - osfullname
    - osmajorrelease
    - osrelease
    - path
    - productname
    - ps
    - pythonpath
    - pythonversion
    - saltpath
    - saltversion
    - saltversioninfo
    - serialnumber
    - server_id
    - shell
    - virtual
    - zmqversion

使用grains.items模块列出所有可用grains的具体数据

[[email protected] ~]# salt ‘computer3‘ grains.items
computer3:
  biosreleasedate: 08/28/2013
  biosversion: 2.10.0
  cpu_flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid
  cpu_model: Intel(R) Xeon(R) CPU E7- 4820  @ 2.00GHz
  cpuarch: x86_64
  defaultencoding: UTF8
  defaultlanguage: en_US
  domain: 
  fqdn: computer3
  fqdn_ip4:
      192.168.100.23
  fqdn_ip6:
  gpus:
      {‘model‘: ‘MGA G200eW WPCM450‘, ‘vendor‘: ‘unknown‘}
  host: computer3
  hwaddr_interfaces: {‘lo‘: ‘00:00:00:00:00:00‘, ‘tap002cf093-0c‘: ‘fe:16:3e:cf:43:28‘, ‘em4‘: ‘f0:1f:af:90:38:65‘, ‘eth1.2‘: ‘f0:1f:af:90:37:fd‘, ‘em3‘: ‘f0:1f:af:90:38:63‘, ‘brq8f15ee7f-54‘: ‘f0:1f:af:90:37:fd‘, ‘brqadf94242-74‘: ‘f0:1f:af:90:37:fd‘, ‘eth1.400‘: ‘f0:1f:af:90:37:fd‘, ‘eth1‘: ‘f0:1f:af:90:37:fd‘, ‘eth0‘: ‘f0:1f:af:90:37:fb‘}
  id: computer3
  ip_interfaces: {‘lo‘: [‘127.0.0.1‘], ‘tap002cf093-0c‘: [], ‘em4‘: [], ‘eth1.2‘: [], ‘em3‘: [], ‘brq8f15ee7f-54‘: [], ‘brqadf94242-74‘: [], ‘eth1.400‘: [], ‘eth1‘: [], ‘eth0‘: [‘192.168.100.23‘]}
  ipv4:
      127.0.0.1
      192.168.100.23
  ipv6:
      ::1
      fe80::60f7:96ff:feab:3d44
      fe80::f21f:afff:fe90:37fb
      fe80::f21f:afff:fe90:37fd
      fe80::f8e7:cdff:fe54:7d02
      fe80::fc16:3eff:fecf:4328
  kernel: Linux
  kernelrelease: 2.6.32-431.el6.x86_64
  localhost: computer3
  manufacturer: Dell Inc.
  master: 192.168.100.200
  mem_total: 225995
  nodename: computer3
  num_cpus: 64
  num_gpus: 1
  os: RedHat
  os_family: RedHat
  osarch: x86_64
  oscodename: Santiago
  osfinger: Red Hat Enterprise Linux Server-6
  osfullname: Red Hat Enterprise Linux Server
  osmajorrelease:
      6
      5
  osrelease: 6.5
  path: /sbin:/usr/sbin:/bin:/usr/bin
  productname: PowerEdge M910
  ps: ps -efH
  pythonpath:
      /usr/bin
      /usr/lib64/python26.zip
      /usr/lib64/python2.6
      /usr/lib64/python2.6/plat-linux2
      /usr/lib64/python2.6/lib-tk
      /usr/lib64/python2.6/lib-old
      /usr/lib64/python2.6/lib-dynload
      /usr/lib64/python2.6/site-packages
      /usr/lib64/python2.6/site-packages/gtk-2.0
      /usr/lib/python2.6/site-packages
      /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info
  pythonversion: 2.6.6.final.0
  saltpath: /usr/lib/python2.6/site-packages/salt
  saltversion: 2014.1.10
  saltversioninfo:
      2014
      1
      10
      0
  serialnumber: XXXXXX
  server_id: 111111111
  shell: /bin/bash
  virtual: physical
  zmqversion: 4.0.5

ping测试grains中os的值为RedHat的主机通信是否正常

[[email protected] ~]# salt -G ‘os:RedHat‘ test.ping 
computer5:
    True
computer8:
    True
computer6:
    True
computer7:
    True
computer4:
    True
computer3:
    True

查看uadoop2主机的ip地址,注意这里不是items噢,而是item

[[email protected] ~]# salt ‘*‘ grains.item ipv4
computer5:
  ipv4:
      127.0.0.1
      192.168.100.25
computer7:
  ipv4:
      127.0.0.1
      192.168.100.27
computer4:
  ipv4:
      127.0.0.1
      192.168.100.24
computer3:
  ipv4:
      127.0.0.1
      192.168.100.23
computer8:
  ipv4:
      127.0.0.1
      192.168.100.28
computer6:
  ipv4:
      127.0.0.1
      192.168.100.26

未完待续.....

时间: 2024-10-03 23:06:58

saltstack 自动化运维神器(二)的相关文章

saltstack 自动化运维神器(四)salt-ssh

satlstack号称自动化运维的利器,那么saltstack能不能实现自身的批量部署呢?如果你也有这样的疑问,那么就更要看这篇文章了.答案当然是肯定的啦!saltstack可以利用salt-ssh来实现自身的批量部署.首先看待salt-ssh,很容易想到它是一个依赖 ssh 来进行远程命令执行的工具,这样做的好处是你不必在客户端安装minion程序,就可以实现远程命令的执行,而且salt-ssh支持salt的绝大部分功能. 10.10.10.4      salt-master    os:r

saltstack 自动化运维神器(二)文件同步

文件同步: 其实在做openstack的运维对一些文件的同步其实是很繁琐.有一个配置项或者一行代码的源码文件进行同步.那么现在我们就开始介绍saltstack的文件同步功能 环境说明:操作系统版本:rhel6.5x64 1.master配置同步根目录 在开始saltstack的配置管理之前,要首先指定saltstack所有状态文件的根目录,在master上做如下操作 ## 首先修改master的配置文件,指定根目录,注意缩进全部使用两个空格来代替Tab(python规范)## 确定指定的目录是否

saltstack 自动化运维神器(三)节点组及复合匹配器

saltstack实现远程配置管理功能首先是要先匹配到对应的target minion,然后才会将命令发送到匹配到的minion上去执行.这里介绍两种比较强大的匹配方法,一是创建节点组:二是使用复合匹配器. 节点组将不同的主机分配到不同的组中去,便于实现主机的集中化管理,接下来首先看salt分组功能的实现. 要使用salt的分组功能,需要在master节点上进行配置,配置的方式有两种: (1).将分组的信息写在master的主配置文件 (2).将分组的信息写在一个单独的配置文件中,然后主配置文件

saltstack 自动化运维神器(一)

随着服务器的增多,越来越多的工作是反复一样的操作,这时候我们开始烦恼.介绍一款很好用的批量操作的软件系统:saltstack.废话少说. 环境说明:操作系统版本:rhel6.5x64 软件下载:http://yunpan.cn/cKvxxLbmaQiMM  访问密码 166e 官方下载:http://docs.saltstack.cn/zh_CN/latest/ 1.安装 master 节点 yum install salt-master minion 节点 yum install salt-m

saltstack 自动化运维安装

saltstack --自动化运维 saltstack-master 安装:yum -y install salt-mastersaltstack-master配置:如下图,修改 salt-master本身监听地址sed -i 's/#interface: 0.0.0.0/interface: 192.168.1.26/g' /etc/salt/mastersed -e '/^$/d;/^#/d' /etc/salt/master #查看配置 可以在master 端使用自动认证(可选)vim /

Saltstack自动化运维工具 实战与部署

自动化工具比较 Puppet也许是四款工具中最深入人心的.就可用操作.模块和用户界面而言,它是最全面的.Puppet呈现了数据中心协调的全貌,几乎涵盖每一个运行系统,为各大操作系统提供了深入的工具.初始设置比较简单,只需要在需要加以管理的每个系统上安装主服务器和客户端代理软件.命令行接口(CLI)简单直观,允许通过puppet命令下载和安装模块.然后,需要对配置文件进行更改,好让模块适合所需的任务;应接到指令的客户端与主服务器联系时,会更改配置文件,或者客户端通过立即触发更改配置文件的推送(pu

gitolite mirror+capistrano2.1.5+hudson3.2.1实现半自动化运维(二)

第一节介绍了gitolite mirror,使得代码能够被传送到服务器组的内部网络中,但是接下来如何将代码再部署到上千台服务器上,而且还能够实现代码回滚呢? shell工具?目前对我来说可以很快的做出来,而且比学一个新的软件快多了.但是记得老男孩的李某某曾经写过一个博客"哥们别逗了,写个脚本那真不叫运维自动化!",人家Python脚本都不叫自动化,我还是不写shell了.所以就必须学习"批量代码部署.回滚.执行"工具了,比如capistrano. capistran

saltstack自动化运维

一.Saltstack架构 Saltstack基于C/S架构,服务端master:192.168.179.128和客户端minions :192.168.179.129 二.Saltstack的安装配置 1.master的安装 rpm -ivhhttp://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpmyum install salt-master默认配置文件位于/etc/salt/master ,默认不需要更改

saltstack自动化运维工具搭建个人笔记

至于为什么选择saltstack,因为Puppet.Chef基于Ruby开发,而ansible.saltstack基于python开发,便于后期二次,良好的可移植性. 又,ansible基于SSH协议传输数据,Saltstack使用消息队列zeroMQ传输数据,MQ通讯和SSH通讯速度相差明显,考虑到速度方面,排除ansible,最终选择Saltstack. 不过两者相比之下Ansible的安全性倒是最好,适合金融行业. 1.本次实验环境 [[email protected] ~]# pytho