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的更多相关文章

  1. ansible运维工具(一)

    运维工具介绍 OS Provisioning: PXE, Cobbler(repository, distritution,profile) PXE: dhcp, tftp, (http, ftp) ...

  2. Ansible运维工具

    1.Ansible是一款极为灵活的开源工具套件,能够大大简化Unix管理员的自动化配置管理与流程控制方式.可以通过命令行或者GUI来使用Ansible,运行Ansible的服务器这里俗称“管理节点”: ...

  3. 自动化运维工具之Cobbler

    一.anaconda anaconda负责安装系统向导,默认为GUI界面,如果我们使用ks自动应答安装的话建议使用TUI界面来安装 在安装启动界面我们可以按esc键来自己手动指定安装启动选项 anac ...

  4. ansible运维工具(二)

    ansible playbook(二) 运行palybook时 要使用ansible-playbook命令 palybook执行任务的顺序是,在第一个主机上完成第一个任务,然后在第二个主机上完成第一个 ...

  5. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  6. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  7. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

  8. 自动化运维工具之ansible

    自动化运维工具之ansible   一,ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

  9. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署

随机推荐

  1. Egret《决战沙城》框架学习

    源码地址:https://github.com/yicaoyimuys/EgretGameEngine 虽然走花观马看了看,但是收获还是蛮多. mvc: BaseController          ...

  2. Dede后台验证码不显示解决方法详解(dedecms 5.7 UTF-8版本)

    织梦(dede)后台验证码不显示有多种可能性,我前几天测试就碰到了这个问题,结果百度搜索了一圈,挨个修改了下,还是不行,最后是在解决另外一个后台上传图片不成功的问题的时候,歪打正着的把验证码问题给解决 ...

  3. Gradle之dependenciens的各种依赖说明

    implementation:对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开.api 完全等同于compile指 ...

  4. repost: Deep Reinforcement Learning

    From: http://wanghaitao8118.blog.163.com/blog/static/13986977220153811210319/ accessed 2016-03-10 深度 ...

  5. Java开发笔记(一百四十二)JavaFX的对话框

    JavaFX的对话框主要分为提示对话框和文件对话框两类,其中提示对话框又分作消息对话框.警告对话框.错误对话框.确认对话框四种.这四种对话框都使用Alert控件表达,并通过对话框类型加以区分,例如Al ...

  6. JAVA十六进制数据接收与传输

    一.十六进制转换工具类 主要包含十六进制字符串转ASCII,ASCII转十六进制字符串以及十六进制字符串转Byte数组等方法: /** * Created by wly on 2018/4/17. * ...

  7. Gradle 翻译 build dependencies 依赖 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. 使用Filezilla Server配置FTP服务器

    一.下载Filezilla  Server 官网网址:https://filezilla-project.org 二.安装Filezilla  Server   Filezilla  Server的安 ...

  9. 解读HTTP/3

    技术的发展总是让人目不暇接,2018年10月,HTTP/3又发布了.虽然已经有一些中文技术媒体做了报道,但大多数是翻译的,而且内容大同小异.最近我专门学习了点关于HTTP/3的知识,在这里随便写写,和 ...

  10. Spring通过注解@Autowired/@Resource获取bean实例时为什么可以直接获取接口而不是注入的类

    问: 这个问题困扰了我好久,一直疑问这个接口的bean是怎么注入进去的?因为只看到使用@Service注入了实现类serviceImpl,使用时怎么却获取的接口,而且还能调用到实现类的方法,难道这个接 ...