聊城网站优化技术,装饰设计师工作内容,商标名字大全,wordpress程序在ftp中上传到空间 网页怎么打不开文章目录 一、Ansible安装及远程控制1、关闭防火墙和SELinux2、安装ansible3、配置SSH无密码登录1、在管理机上生成一对密钥2、将公钥下发到远程主机3、保管密钥 4、主机目录 二、常用模块1、setup模块2、copy模块3、file模块4、shell模块5、script模块6、ping模块7、group模块… 文章目录 一、Ansible安装及远程控制1、关闭防火墙和SELinux2、安装ansible3、配置SSH无密码登录1、在管理机上生成一对密钥2、将公钥下发到远程主机3、保管密钥 4、主机目录 二、常用模块1、setup模块2、copy模块3、file模块4、shell模块5、script模块6、ping模块7、group模块8、yum模块9、service模块 三、playbook脚本1、指定节点和用户2、任务列表3、handlers4、基本语法1、变量2、条件语句3、循环4、include 四、谢谢观看 一、Ansible安装及远程控制
前提要有两台主机我这里是两台虚拟机 如下
ansible只需在管理机上安装即可。 被管理机要设置静态IP 设置方法可参考此篇博客 被管理机也被称为节点。 下文中将被管理机centos_7_1简称为被控主机1
1、关闭防火墙和SELinux
systemctl status firewalld #查看防火墙状态防火墙状态参数为active即为开启。
sudo systemctl stop firewalld #临时关闭防火墙参数改为inactive即关闭状态。 关闭SELinux 查看
getenforce关闭
sudo setenforce 02、安装ansible
1、安装Ansible软件包的EPEL源
yum install epel-release2、安装ansible
yum -y install ansible3、查看ansible版本
ansible --version3、配置SSH无密码登录
需要使用到两个命令ssh-keygen生成一对密钥、ssh-copy-id把本地主机的公钥复制到目标主机上。
1、在管理机上生成一对密钥
ssh-keygen -t rsa遇到询问一路回车 执行完毕后会在/root/.ssh下生成一对密钥其中id_rsa为私钥id_rsa.pub为公钥。
2、将公钥下发到远程主机
ssh-copy-id root192.168.58.132 #该地址为被控主机1的ip地址3、保管密钥
ssh-add .ssh/id_rsa
ssh 192.168.58.132 #被控机ip此时就处于被控主机1的家目录下。 回到管理机只需输入ssh命令
ssh 管理机ip4、主机目录 主机目录又称主机清单保存了ansible所管理的远程主机信息及一些连接参数也可用来对远程主机进行分类。 主机目录的配置文件默认是/etc/ansible/hosts 查看该文件
vi /etc/ansible/hosts可看到以下内容 将该文件清空输入一下内容
[webservers]
192.168.58.132 #被控主机1的ip地址测试被控主机1是否能被ping通
ansible webservers -m ping二、常用模块
查看ansible中已加载的模块
ansible-doc -l通过ansible命令可以调用这些模块
ansible [节点] -m [模块] -a [参数]1、setup模块
用于获取节点的详细信息。 例使用setup模块查看webservers组的节点信息。
ansible webservers -m setup2、copy模块
可实现从管理机向节点复制静态文件并设置合理的文件权限。 常用参数
dest #文件复制的目的地
src #复制的源文件
backup #是否备份原始文件
validate #复制前是否检验需要复制目的地的路径例 将/root/demo/demol.txt复制到所以节点的/root目录下(若没有该文件可换成其它文件
cd /root/demo
ansible all -m copy -a dest/root src/root/demo/demol.txt3、file模块
可用来定义文件或目录属性、权限创建、删除文件或目录。 常用参数
mode #文件的读/写权限
path #文件路径
src #文件链接路径
stat #默认值file #选项file #创建文件 link #创建链接sbsent#删除文件4、shell模块
可以执行远程主机的shell脚本文件也支持管道。 例 检查mysql进程是否存在
ansible all -m shell -a ps -ef|grep mysql由图可知节点192.168.58.132下有mysql进程。
5、script模块
用于将管理机上的shell脚本发送到节点上执行。 例 写一个脚本
vi hello.sh//脚本内容为
#!/bin/bash
echo hello ansible不会写shell脚本可参考这两篇博客 Shell概念、命令、操作重定向、管道、变量 Shell脚本编写基本语法 将该脚本发送到webservers组的节点上执行
ansible webservers -m script -a /root/hello.sh6、ping模块
检查连通性。
ansible webservers -m ping7、group模块
可以在节点上创建组。 常用参数
gid #用户组的GID
name #用户组的名字
state #默认值present #选项present #新增# absent #删除
例 在webservers组的节点上创建一个组名为test、GID为2017的组
ansible webservers -m group -a gid2017 nametest8、yum模块
从指定服务器自动下载安装RPM包并且可自动处理依赖性关系。 常用参数
name #包名
state 选项present #安装latest #更新absent #卸载例 在被控主机1上安装命令tree:
ansible 192.168.58.132 -m yum -a nametree statepresent9、service模块
管理节点上的服务可开启、关闭、重启服务等。
参数 选项 含义
enabled yes/no 是否开机自启动
name -- 服务名称state started 启动stopped 关闭restarted 重启reloaded 重新下载例 开启被控节点192.168.58.132端的firewalld服务
ansible 192.168.58.132 -m service -a namefirewalld statestarted可在对应节点使用systemctl status firewalld命令来查看firewalld状态。
三、playbook脚本
在学习ansible模块的时候都是使用命令在节点上执行任务命令使用比较复杂且每执行一次均要重复输入为避免重复输入命令ansible提供了playbook脚本。一个能被ansible执行的YAML文件叫做playbook。
1、指定节点和用户
每个playbook都需要指定针对那些节点进行运维并且以哪个用户来执行任务。 指定节点hosts 指定用户users
-hosts: webservers #指定webservers组中的所有节点users: root #指定用户为root注hosts的值可以是主机或组也可以是关键字all全部节点。
2、任务列表
即要执行的任务的队列关键字为tasks。任务列表中的每个任务都通过调用ansible模块完成。按定义的先后顺序执行。 例
tasks:- name: running nginx #启动nginx服务service: namenginx staterunning #调用service模块name标签是对任务的描述也可以不加但一般是会使用name标签。
3、handlers
对ansible模块进行调用用于处理一些动态事件。 handlers中的模块调用与任务列表中的任务不同任务默认按定义顺序执行而handlers只有被触发时才会执行。
4、基本语法
1、变量
在playbook文件中是通过字段vars来定义变量的。 例
- hosts: all #指定节点为所有节点vars:http_port: 80 #定义http_port变量值为802、条件语句
由字段when声明。 例 当操作系统为Red Hat时执行重启命令
task:- name: reboot Red Hat hostcommand: /usr/sbin/rebootwhen: ansible_os_familyRed Hat执行顺序先判断when条件。如果成立返回True则执行上一条语句command 如果不成立返回False不会触发上一条语句
3、循环
常见的循环由字段with_items声明。 例 在指定节点上同时安装多个软件
task:- name: install LAMPyum: name{{item}} statepresentwith_items:- nginx- mysql-server- php代码功能安装nginx、mysql-server、php 3个软件。with_items会自动循环执行上面的语句name{{item}} statepresent会用软件名替换item循环次数为元素个数。
4、include
当多个playbook需要重复使用任务列表时可以将任务内容抽离出来写入独立文件中要调用时只需用include将文件包含进来。 例有单独的任务列表文件tasks/nignx.yml文件内容为
---
- name: install nginxyum: namenginx statepresent #安装nginx此后如果有playbook要执行该操作只需写入以下代码
tasks:- include: tasks/nginx.yml #将该文件包含进来用例演示 通过编写一个playbook实现Apache的安装与启动。 1、创建目录
mkdir /root/ansible在该目录下添加apache.yml文件此文件就是一个playbook
cd /root/ansible
touch apache.yml编写playbook内容为
---
- hosts: 192.168.58.132users: rootvars:http_port: 80max_clients: 200tasks:- name: ensure apache is latestyum: pkghttpd statelatest- name: write the apache config filetemplate: src/srv/httpd.j2 dest/etc/httpd.confnotify:- restart apache- name: ensure apache is runningservice: namehttpd statestartedhandlers:- name: restart apacheservice: namehttpd staterestarted使用以下命令调用
ansible-playbook /root/ansible/apache.yml四、谢谢观看
参考书籍《Linux系统管理与自动化运维》黑马程序员/编著