Ansible-2.9.27安装部署
1)在playbooks 中定义任务:-name: task description #任务描述信息module_name: module_args #需要使用的模块名字: 模块参数2) ansible-playbook 执行 命令:先介绍下: Playbook常用文件夹作用:files:存放需要同步到异地服务器的源码文件及配置文件;handlers:当服务的配置文件发生变化时需要进行的操作,
·
1.ansible原理
ansible是一款自动化运维工具,基于Python开发,可以实现批量系统设置、批量程序部署、批量执行命令等功能。 Ansible完全基于Python开发,要求python的版本为2.6以上。 Ansible默认通过SSH协议管理机器,因此,客户端无需任何配置,管理端配置好后即可使用。
2.安装ansible
#需要依赖包,先安装第三方库,在安装Ansible yum install epel-release yum install ansible
3.Ansible的配置文件说明
tree /etc/ansible/ ├── ansible.cfg ├── hosts └── roles #ansible.cfg主配置文件 #hosts里定义被管理的主机 #roles分模块式管理,防止冗余代码
4.添加被管理主机
vim /etc/ansible/hosts #这里用的是分组存放主机的 #可以填写域名 #可以填写ip #可以进行分组 [web] 192.168.10.81
常用命令
1.测试连通性
ansible web -m ping -k #-m:调用命令 #-k:使用密码
2.设置免密登录
ssh-keygen ssh-copy-id 192.168.10.81 #不使用密码进行测试 ansible web -m ping
3.创建用户
ansible web -m user -a "name=ssj password=abc123"
4.查看主机名
ansible web -a "hostname" #hostname可以变成mkdir或rm -rf,但是这样不规范,不支持|符号
yum模块
1.为远程主机安装httpd
ansible web -m yum -a "name=httpd state=present" #yum模块linux平台软件包管理。 #yum模块可以提供的status状态: latest ,present,installed #这三个代表安装;removed, absent #这两个是卸载
service模块
1.远程开启httpd的服务
ansible web -m service -a "name=httpd state=started" #started:启动 #stopped:关闭 #restarted:重启 #reloaded:不关闭服务,加载配置文件
copy模块和fetch模块
1.更换index.html(将文件拷贝到远程机器)
ansible web -m copy -a "src=/root/index.html dest=/var/www/html/index.html" 此处src为本机文件路径,而dest是远程机器的路径。
2.将http.conf拷出来做修改
ansible web -m fetch -a "src=/etc/httpd/conf/httpd.conf dest=/root/ flat=yes" 此处src为远程机器上的地址,dest为本机的文件夹地址,即文件拷贝过来放置的文件夹的地址 #backup=yes为覆盖原文件; #force=yes为强制执行; #flat=yes是在主服务器上不创建目录,只拷贝想要的,否则会有/etc/httpd/conf/这三个层级目录 #fetch不可以对目录进行操作
file模块使用
1.给文件更改权限
ansible web -m file -a "path=/root/321 mode=0755" #path:指的是想要修改的文件 #mode:想要修改的权限
2.设置软连接
ansible web -m file -a "src=/etc/fstab dest=/tmp/fstab state=link"
3.创建文件
ansible web -m file -a "path=/tmp/zzlssb state=touch"
cron模块远程管理主机crontab配置
1.增加每30分钟执行 echo"我是曾卓伦的爹"
ansible web -m cron -a "name='list dir' minute='*/30' job='echo 我是曾卓伦的爹'" #name:可以自己定义 #ansible web -m cron -a "name='list dir1' minute='5' job='echo 我是曾卓伦的爹'" #每五分钟
2.删除创建好的计划任务
ansible web -m cron -a "name= 'list dir' state=absent" #name:名称需要对应 #state:absent是删除
playbook
playbooks的介绍
1)在playbooks 中定义任务: -name: task description #任务描述信息 module_name: module_args #需要使用的模块名字: 模块参数 2) ansible-playbook 执行 命令: ansible-playbook site.yml
先介绍下: Playbook常用文件夹作用:
-
files:存放需要同步到异地服务器的源码文件及配置文件;
-
handlers:当服务的配置文件发生变化时需要进行的操作,比如:重启服务,重新加载配置文件,handlers ['hændləz] 处理程序
-
meta:角色定义,可留空;
-
tasks:需要进行的执行的任务;
-
templates:用于执行lamp安装的模板文件,一般为脚本;
-
vars:本次安装定义的变量
使用playbook安装lamp
思路:
1.需要安装httpd
2.需要安装mysql
3.安装php
4.需要把自己修改好的httpd.conf传输过去
5.需要把自己修改好的my.cnf传输过去
6.需要把自己修改的index.php传输过去以便测试
7.启动所有服务
实践:
#本机端: yum install httpd mariadb-server mariadb php php-mysql -y #本机安装lamp主要是为了获取配置文件
可以理解为playbook是用通过文件夹的方式来管理的,每一个文件夹里都是单独的体系
#目录结构/etc/ansible/lamp/ lamp/ └── roles ├── httpd │ ├── default │ ├── files │ │ ├── httpd.conf │ │ └── index.php │ ├── handlers │ │ └── main.yml │ ├── meta │ ├── tasks │ │ └── main.yml │ ├── templates │ └── vars ├── mysql │ ├── default │ ├── files │ │ └── my.cnf │ ├── handlers │ │ └── main.yml │ ├── meta │ ├── tasks │ │ └── main.yml │ ├── templates │ └── vars ├── php │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ │ └── main.yml │ ├── templates │ └── vars ├── prepare │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ │ └── main.yml │ ├── templates │ └── vars └── site.yml #以上都是需要自己去创建的
1.准备工作
#创建必要的文件夹
mkdir -p
/etc/ansible/lamp/roles/{prepare,httpd,mysql,php}/{tasks,files,templates,vars,meta,default,handlers}
#为了更好的理解目录,以下的操作都是在/etc/ansible下进行操作
cd /etc/ansible/
vim lamp/roles/prepare/tasks/main.yml
- name: delete yum configuration
shell: rm -rf /etc/yum.repo.d/*
- name: get new yum configuration
shell: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- name: yum clean
shell: yum clean all
2.httpd
#拷贝httpd.conf和index.php cp /etc/httpd/conf/httpd.conf lamp/roles/httpd/files/ cp /var/www/html/index.php lamp/roles/httpd/files/ #编写httpd的yml文档 vim lamp/roles/httpd/tasks/main.yml - name: install httpd yum: name=httpd state=present - name: delete httpd.conf shell: rm -rf /etc/httpd/conf/httpd.conf - name: new configuration copy: src=httpd.conf dest=/etc/httpd/conf/httpd.conf - name: index.php test copy: src=index.php dest=/var/www/html/index.php notify: restart httpd #去调用另一个启动文件夹 vim lamp/roles/httpd/handlers/main.yml - name: restart httpd #此名称要和tasks里定义一样,否则调度不到 service: name=httpd state=restarted
3.mysql(mariadb)
#拷贝my.cnf至mysql下的file cp /etc/my.cnf lamp/roles/mysql/files/ #编写mysql的yml文件 vim lamp/roles/mysql/tasks/main.yml - name: install mariadb yum: name=mariadb-server state=present - name: delete my.cnf shell: rm -rf /etc/my.cnf - name: provide my.cnf copy: src=my.cnf dest=/etc/my.cnf - name: chage the owner shell: chown -R mysql:mysql /mysqldata/data #my.cnf里定义的数据存放目录(个人爱好) notify: restart mariadb #去调用另外一个启动文件夹 vim lamp/roles/mysql/handlers/main.yml - name: restart mariadb service: name=mariadb state=restarted
4.php
#编写php的yml文件 vim lamp/roles/php/tasks/main.yml - name clean yumPid shell: rm -rf /var/run/yum.pid #如果有报错就添加,没有可以不必添加 - name: install php yum: name=php state=present - name: install php-mysql yum: name=php-mysql state=present
5.定义总体任务
vim lamp/roles/site.yml - name: lamp build remote_user: root hosts: web roles: - prepare - mysql - php - httpd #remote_user:远程连接的root #hosts:hosts里定义的,这里也可以是ip、域名、组 #roles:是定义启动的,可以玩的更炫,比如想在一台上装httpd,另一台上装mysql和php就可以实现操作不冗余
6.检查语法和启动
#检查语法 ansible-playbook --syntax-check lamp/roles/site.yml #启动剧本 ansible-playbook lamp/roles/site.yml
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)