ansible运维工具,dhcp,cobbler
1、借助Ansible Playbook自动化搭建LNMP环境(可借助yum)
通过yum方式安装ansible,先安装epel仓库
yum install epel-release 安装epel仓库
yum install ansible 安装ansible程序
/etc/ansible/ansible.cfg 主配置文件。
/etc/ansible/hosts主机清单,
/etc/ansible/roles角色配置文件
/usr/bin/ansible,主程序 /usr/bin/ansible-playbook剧本主程序
使用免密钥登录其他节点。
ssh-keygen
ssh-copy-id 192.168.64.101
ssh-copy-id 192.168.64.102
ansible host(主机) -m 指定模块 -a 模块参数 -f分批次
讲节点加入至ansible主机。修改/etc/ansible/hosts文件。写入ip地址,或主机名
测试ping模块检查节点
playbook的基础组件:
Hosts:运行指定任务的目标主机;
remoute_user: 在远程主机上执行任务的用户;
sudo_user:
tasks:任务列表
模块,模块参数;
格式:
(1) action: module arguments
(2) module: arguments
注意:shell和command模块后面直接跟命令,而非key=value类的参数列表;
(1) 某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;
(2) 任务可以通过"tags“打标签,而后可在ansible-playbook命令上使用-t指定进行调用;
定义playbook剧本
[root@centos7 ~]# vim lamp.yml
- hosts: all #定义主机
remote_user: root #定义以谁的身份执行
tasks: #定义任务
- name: install nginx package
yum: name={{ item }} state=installed #安装程序 以变量的方式递归安装
with_items: #定义递归列表
- php-fpm
- mariadb-server
- nginx
- name: install template
template: src=/root/nginx.conf.j2 dest=/etc/nginx/nginx.conf #修改nginx配置文件以fastcgi协议与php模块通信,需要先定义一个模板,将模板修改后拷贝至其他主机,我这里将nginx.conf拷贝一份当模板,修改通信方式之后拷贝至其他主机,使用template模块移动时必须使用j2格式
copy: src=/var/www/html/index.php dest=/var/www/html/index.php #将php页面拷贝至其他节点用以测试
notify: restart service #如果配置文件修改则触发handlers
- name: restart service
service: name={{ item }} state=started ##启动服务
with_items:
- php-fpm
- mariadb
- nginx
handlers: #接notify定义
- name: restart service # 名称一定要与 notify定义名称相同
service: name={{ item }} state=restarted ##执行重启任务
with_items:
- php-fpm
- mariadb
- nginx
执行结果
检查节点端口是否开启
测试访问其他节点
2、采用Ansible Role方式自动化搭建LNMP
在默认ansible roles目录(/etc/ansible/roles/)中创建nginx,php-fpm,mariadb目录并创建子目录,之后在各个子目录中创建yml文件,在剧本中调用角色即可
####vfiles/ :存放由copy或script模块等调用的文件;
####templates/:template模块查找所需要模板文件的目录;
####tasks/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
####handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
####vars/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
####meta/:至少应该包含一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要在此文件中通过include进行包含;
####default/:设定默认变量时使用此目录中的main.yml文件;
mkdir -p ./{nginx,php-fpm,mariadb}/{files,templates,tasks,handlers,vars,meta,default}
vim nginx/tasks/main.yml #在任务目录下创建yml文件定义任务
- name: install epel-release
yum: name=epel-release state=installed
- name: install nginx
yum: name=nginx state=installed
- name: copy config
copy: src=index.php dest=/var/www/html/index.php
- name: copy conf
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: reload nginx
- name: service restart nginx
service: name=nginx enabled=true state=reloaded
vim /etc/ansible/roles/nginx/handlers/main.yml #定义handlers
- name: reload nginx
service: name=nginx state=reloaded
mv ./templates/nginx.conf ./templates/nginx.conf.j2 #将制作好的模板文件拷贝至templates目录
cp /var/www/html/index.php ../php-fpm/files/ #将index.php文件拷贝至files目录(能够自动加载)
vim mariadb/tasks/main.yml #定义mariadb任务
- name: mariadb
yum: name=mariadb-server state=installed
- name: php-fpm
service: name=php-fpm state=started
vim php-fpm/tasks/main.yml #定义php的tasks
- name: mariadb
yum: name=mariadb-server state=installed
- name: php-fpm
service: name=php-fpm state=started
vim lamp.yml 将角色写入剧本,直接调用剧本即可
- hosts: all
remote_user: root
roles:
- nginx
- mariadb
- php-fpm
ansible-playbook lamp.yml #执行playbook
3、采用Ansible在各结点上格式化/dev/vdb,并挂载至/data目录,同时使用UUID配置fstab
vim vdb.yaml
hosts: web
remote_user: root
tasks:
name: 格式化/dev/vdb
filesystem: fstype=xfs dev=/dev/vdb
name: mount/data
mount: name=/data src=/dev/vdb fstype=xfs state=mounted opts=rw
name: 配置fstab
shell: echo UUID=ls -l /dev/disk/by-uuid/ | grep vdb | cut -d' ' -f11 /data xfs default 0 0 >> /etc/fstab
4、搭建DHCP服务,为局域网内用户提供10.1.1.0/24网段的IP,且租约期默认为48小时
1、搭建DHCP服务,为局域网内用户提供10.1.1.0/24网段的IP,且租约期默认为48小时
1)准备两台服务器,都位于10.1.1.0/24网段内:
A机:DHCP服务端,
B机:客户端,从服务器获得IP地址。
2)A机服务端执行以下操作:
临时关闭防火墙
# service iptables stop
临时关闭 selinux
# setenforce 0
停止网络管理服务的开机自启动设置
# chkconfig --level 2345 NetworkManager off
关闭网络管理服务
# service NetworkManager stop
编辑网卡设置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
#表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理
NM_CONTROLLED=no
#服务器自身使用静态IP地址
BOOTPROTO=static
#配置地址为
IPADDR=10.1.1.88
#网关配置
GATEWAY=10.1.1.2
安装DHCP服务
# yum install dhcp* -y
配置DHCP服务
#vi /etc/dhcp/dhcpd.conf
allow bootp;
#默认租约时间(单位为秒,48小时为48*3600秒,即172800秒)
default-lease-time 172800;
#最大租约时间
max-lease-time 172800;
#syslog设置,可以到/var/log/syslog文件查看DHCP分配的日志
log-facility local7;
#子网和子网掩码
subnet 10.1.1.0 netmask 255.255.255.0 {
#客户端的默认网关
option routers 10.1.1.2;
#客户端的子网掩码
option subnet-mask 255.255.255.0;
#客户端的搜索域
option domain-name "magedu.com";
#客户端的域名服务器
option domain-name-servers 10.1.1.2;
#可供分配的IP范围
range dynamic-bootp 10.1.1.50 10.1.1.250;
}
重启 dhcp 服务
# service dhcpd restart
3)B机客户端执行以下操作进行测试
编辑网卡配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
#不通过网络管理器进行管理
NM_CONTROLLED=no
#通过dhcp服务来获得IP
BOOTPROTO=dhcp
重启网卡
# service network restart
查看B机的IP
# ifconfig
如果IP在10.1.1.50 和10.1.1.250之间,则测试成功。
5、在上述实验基础上,实现DHCP中继
DHCP中继:当DHCP客户机和DHCP服务器不在同一个网段时,由DHCP中继传递DHCP报文
在第1题实验的基础上,
准备一台DHCP中继器,这里称为C机,有两张网卡,一张与10.1.1.0/24网段连接,另一线与10.1.2.0/24网段连接,
还需要一台D机作为10.1.2.0/24网段的客户端服务器,用于验证DHCP中继服务。
1)在A机,修改DHCP服务配置文件,增加一下子网设置:
subnet 10.1.2.0 netmask 255.255.255.0 {
#客户端的默认网关
option routers 10.1.2.2;
option subnet-mask 255.255.255.0;
#客户端的搜索域
option domain-name "magedu.com";
#客户端的域名服务器
option domain-name-servers 10.1.1.2;
#可供分配的IP范围
range dynamic-bootp 10.1.2.50 10.1.2.250;
}
重启DHCP服务
#service dhcpd restart
2)在C机(DHCP中继服务器)执行的操作
安装DHCP服务
# yum install dhcp* -y
安装dhcp软件包,安装完之后,就已经包含了dhcp中继相关的程序和脚本等文件。配置dhcp中继服务器时,只需修改配置文件/etc/sysconfig/dhcrelay服务即可,作为路由器使用时,还需要开启服务器的路由转发功能。
#vi /etc/sysconfig/dhcrelay
#指定要监听网卡,不定义就是监听所有
INTERFACES="eth0 eth1"
#指定DHCP服务器的地址
DHCPSERVERS="10.1.1.88"
配置网卡配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.1.2
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
#不通过网络管理器进行管理
NM_CONTROLLED=no
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.1.2.1
NETMASK=255.255.255.0
GATEWAY=10.1.2.1
#不通过网络管理器进行管理
NM_CONTROLLED=no
开启服务器的路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
重启网卡
#service network restart
重启DHCP中继服务
#service dhcrelay restart
3)D机客户端执行以下操作进行测试
(D机执行与B机一样的操作,以验证IP是否能够获取到)
作者:haoxi2018
链接:https://www.jianshu.com/p/772bf445708d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
6、使用cobbler批量安装操作系统(基于Centos7.x )
7、搭建Cobbler实现自动化安装系统
首先需要配置主机能连上外网,yum 安装cobbler
需
要提前配置epel源的路径
启动程序后运行 cobbler check 检查提示,发现报错
启动httpd tftp 服务之后顺利启动提示
一共有8个步骤,一步一步改
修改 /etc/cobbler/settings 修改server地址改成内网段和next_server地址
修改自动安装的口令
使用 openssl passwd -l 生产加密口令
修改dhcp配置服务为1 表示由 cobbler服务自动生成dhcp配置文件
zhixing cobbler get-loaders 命令 从互联网下载 tftp所需要的配置文件
使用 cobbler sync 同步。自动讲下载的目录拷贝到tftp目录中
但是报错发现dhcp服务未启动
vim /etc/cobbler/dhcp.template
修改cobbler 提供的dhcp管理模板中 网络地址及地址段
使用 cobbler sync 同步dhcp服务
制作光盘镜像到http目录中
cobbler sync 之后发现已经同步完成
ansible运维工具,dhcp,cobbler的更多相关文章
- ansible运维工具(一)
运维工具介绍 OS Provisioning: PXE, Cobbler(repository, distritution,profile) PXE: dhcp, tftp, (http, ftp) ...
- Ansible运维工具
1.Ansible是一款极为灵活的开源工具套件,能够大大简化Unix管理员的自动化配置管理与流程控制方式.可以通过命令行或者GUI来使用Ansible,运行Ansible的服务器这里俗称“管理节点”: ...
- 自动化运维工具之Cobbler
一.anaconda anaconda负责安装系统向导,默认为GUI界面,如果我们使用ks自动应答安装的话建议使用TUI界面来安装 在安装启动界面我们可以按esc键来自己手动指定安装启动选项 anac ...
- ansible运维工具(二)
ansible playbook(二) 运行palybook时 要使用ansible-playbook命令 palybook执行任务的顺序是,在第一个主机上完成第一个任务,然后在第二个主机上完成第一个 ...
- 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操
前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- 自动化运维工具之 Ansible 介绍及安装使用
一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...
- 自动化运维工具之ansible
自动化运维工具之ansible 一,ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...
- 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署
随机推荐
- 初识RxSwift
初识Observable Observable<T> 这个类就是Rx框架的基础, 我们可以称他为可观察序列, 他的作用就是可以异步的产生一系列的Event(事件), 即一个Observab ...
- TransactionScope处理分布式事物时提示"事务已被隐式或显式提交,或已终止"
在连接字符串中加入"Enlist=false",问题就这样解决了. ConnectionString = "Data Source=.;Initial Catalog=c ...
- vue脚手架中使用Vant,实现自动按需引入组件,并将px转换为rem
偶然间看到一款不错的移动端vue组件库Vant,照着官方文档敲了一下,感觉还是不错的.想着以后的项目中可能会运用到,特此记录下,方便之后使用. 现在很多的组件库为了减小代码包体积,都支持按需加载了.V ...
- 解决IntelliJ IDEA 控制台输出中文乱码问题
解决IntelliJ IDEA 控制台输出中文乱码问题 问题描述:如图,控制台输出的字符,乱码 解决方案 第一步:修改intellij idea配置文件: 找到Intellij idea安装目录,bi ...
- 1.2 lvm镜像卷
镜像能够分配物理分区的多个副本,从而提高数据的可用性.当某个磁盘发生故障并且其物理分区变为不可用时,您仍然可以访问可用磁盘上的镜像数据.LVM 在逻辑卷内执行镜像. 系统版本: # cat /etc ...
- ProxyGenerator proxy = new ProxyGenerator(); 代理+拦截器模式
所谓代理,就是不直接访问目标对象,而是由中间对象生成一个目标代理类,由中间代理对象来代理目标对象的方法.Java里面有JDK和CGLIB代理.C#里面则使用Castle代理.nuget引用如下: &l ...
- SpringBoot+Vue前后端分离项目,maven package自动打包整合
起因:看过Dubbo管控台的都知道,人家是个前后端分离的项目,可是一条打包命令能让两个项目整合在一起,我早想这样玩玩了. 1. 建立个maven父项目 next 这个作为父工程,next Finish ...
- Django框架(十一)--cookie和session
cookie和session组件 cookie 1.cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它 ...
- DS 图解堆排
堆排其实就是选择排序,只不过用了完全二叉树特性. 堆排思想 : 利用完全二叉树特性建堆和重复选择调整来得到有序数组. 完全二叉树有什么特性呢? 节点左对齐 ---> 层序遍历不会出现空,可以用数 ...
- hive工作中的一些优化策略
1.hive抓取策略 hive.fetch.task.conversion = more/none more不走mr,none走mr 2.explain 显示执行计划 3.设置 ...