spark-wxg

ansible基础

环境准备

  • 启动6台虚拟机
  • 2cpu,1.5G 以上内存
  • 10G 以上硬盘,1块网卡

此方案需要准备六台主机,1台管理主机,5台托管主机,以实现批量程序部署,批量运行命令等功能,具体要求如表-1所示:

 

 步骤一:基础环境准备

1)安装ansible

yum -y install ansible

2)请在6台主机上面配置/etc/hosts,这里以ansible主机为例子

 

 

批量部署证书文件

  • 创建一对密钥
  • cd /root/.ssh
  • ssh-keygen -t rsa -b 2048 -N \'\' -f key
  • 给所有主机部署密钥
  • ssh-copy-id -i key.pub 主机名称

步骤一:批量部署证书文件,给所有主机部署密钥

1)创建密钥

 

 2)给所有主机部署密钥

 

 

主机定义与分组

  • 给所有主机部署 key
  • 在 inventory 文件中指定 key 的位置
  • 配置主机分组,自定义文件,在重新定义一个新的 ansible.cfg
  • 在自定义的文件夹中完成之前的配置

步骤一:给所有主机部署key,案例2已经做过,这里不再重复

步骤二:在 inventory 文件中指定 key 的位置

 

 步骤三:配置主机分组,自定义文件,在重新定义一个新的 ansible.cfg

自定义的ansible文件只在当前路径生效

1)自定义文件

 

 

 

 2)测试结果

 

 

 

 

 

练习理解批量执行

  • shell
  • 执行以下命令查看结果,并说明原因
  • ansible web -m shell -a "echo ${HOSTNAME}"
  • ansible web -m shell -a \'echo ${HOSTNAME}\'
  • testfile 文件在哪里
  • ansible cache -m shell -a \'cd /tmp\'
  • ansible cache -m shell -a \'touch testfile\'

1)shell

 

 2)创建的文件在哪查看

 

 

注:

1)变量解析

ansible 执行命令是二次解析,第一次在本机解析, 第二次在执行机器解析,需要第二次解析的变量要转移(\)

2)创建的文件在哪里

文件在用户家目录,ansible 是使用 ssh 多次连接执行,连接退出以后之前的状态就全部失效了

解决方法:使用 chdir 代替 cd 命令

ansible cache -m shell -a \'chdir=/tmp touch testfile\'

 

创建用户

  • 添加用户
  • 给 web1 db2 添加用户 nb
  • 设置 nb 的密码为 123

步骤一:添加用户

在web1和 db2主机上创建nb用户,修改nb的密码为123(以web1为例子)

 

 

 

练习模块

  • 添加用户
  • 给所有 web 主机添加用户 wk
  • 要求 nb 用户与 wk 用户不能出现在同一台主机上
  • 设置 wk 用户的 密码是 456

步骤一:添加用户

对于太复杂的命令,可以写个脚本,然后用script模块执行

用脚本写,script模块执行

 

 

 

 验证结果

 

 

 

练习模块

  • 批量修改配置文件
  • 批量修改所有机器的 dns 配置 /etc/resolv.conf
  • 批量同步所有机器的 yum 配置文件
  • 给所有 db 主机开启 binlog 日志
  • log_bin = mysql-bin
  • binlog-format = mixed

步骤一:练习模块

1)批量修改配置文件

批量修改所有机器的 dns 配置 /etc/resolv.conf

 

 批量同步所有机器的 yum 配置文件

 

 

2) 给所有 db 主机开启 binlog 日志

log_bin = mysql-bin

binlog-format = mixed

 

拷贝一个mariadb的配置文件到ansible的管理主机上面,修改其文件

 

 

 

模块练习

  • 使用copy模块同步 my.cnf 配置文件
  • 使用 lineinfile 模块 修改 binlog 格式
  • 使用 replace 模块修改 binlog 格式

步骤一:综合练习

1)使用copy模块同步my.cnf配置文件

2)使用 lineinfile 模块 修改 binlog 格式

类似sed的一种行编辑替换模块

path 目标文件文件

regexp 正则表达式,要修改的行

line 最终修改的结果

3)使用 replace 模块修改 binlog 格式

类似sed的一种行编辑替换模块

path 目的文件

regexp 正则表达式

replace 替换后的结果

 

 4)setup模块

filter 过滤指定的关键字(可以过滤到我们需要的信息)

 

 

分类:

技术点:

相关文章: