首页 > 其他分享 >ansible自动化部署

ansible自动化部署

时间:2023-07-15 15:22:38浏览次数:29  
标签:name 部署 mysql -- zabbix ansible 自动化 root

1.ansible简介

   自动化运维工具,依赖操作系统现有的凭证(公钥)访问远程机器,
   批量化服务器管理(配置操作系统、开发软件、编排高级IT任务)

   ansible实现批量化管理原理:

   管理服务器安装ansible和生成公钥拷贝到受管服务器 --> /etc/ansible/hosts配置用户组,添加受管理IP--->ansible批量执行命令

2.ansible的yum安装和配置
   (1)yum源安装
       yum -y install epel-release
       yum -y install ansible --直接安装
   (2)ansible配置文件/etc/ansible/hosts
       vi /etc/ansible/hosts
       [test] --用户组
      192.168.8.129 --组内IP
   (3)把本机公钥拷贝到远程主机上
       #ssh-keygen -t dsa --生成公钥(一直回车就行)
       #vi /etc/ssh/sshd_config --下列两行取消注释
       PubkeyAuthentication yes
       AuthorizedKeysFile .ssh/authorized_keys
       #service sshd restart --重启sshd服务
       #ssh-copy-id -i ~/.ssh/id_dsa.pub [email protected]
   (4)测试是否安装成功:
       ansible 192.168.8.129 -m ping --user=root   (-m 命令 --user=root root用户登录) --成功返回pong

3.ansible基本使用方法
   (1)Ad-hoc命令行工具,相当于普通shell命令。(ansible help 查看帮助信息)
       ansielbe test -m shell -a "ls /root" --user=root
       命令解释:
       test 主机组
       -m shell -a " " 执行shell命令
       --user=root 指定root登录
       -m 指定使用模块(如ping/shell/copy)
       -M 指定模块存放路径
       -a 后面要传的参数放里面
       ansible test -m shell -a "ls /root" --user=root --ask-pass
       命令解释:
       --ask-pass 操作目标主机需要密码 ( 同-K)
       -s,sudo 切换用户
       -S,su
       -become/b 切换到root用户

   (2)Inventory:定义主机关系的文件,默认路径/etc/ansible/hosts,文件内容格式ini
       a.[组名] --定义用户组
       主机名1
       主机名2
       test ansible_ssh_port=22 ansible_ssh_host=192.168.8.130 ansible_ssh_user=root
       [node]
       test
       b.解释:(好处:个性化的主机直接定义)
       ansible_ssh_port 指定端口
       ansible_ssh_host IP
       ansible_ssh_user 用户
       c.inventory批量主机组:(编号联系,可以一行定义。同时大量机器初始化,非常有用)
[webservers]
www[01:50].example --[01:50] 表示01到50
[databases]
db-[a:f].example.com
4.Ad-hoc和Inventory使用实例
    例子1:安装httpd测试机,管理httpd服务测试机
    ansible test -m yum -a "name=httpd state=latest" --安装httpd服务
   (name 服务 state=latest 安装(remove卸载)

   ansible test -m service -a "name=httpd state=started" --启动服务
   (name 指定服务 state 指定操作started/reloaded/restarted/stopped
   关键字搜索ansible service)
   验证httpd服务是否启动成功:
   ansible test -m shell -a "ps -ef|grep httpd|grep -v grep"
   (多个参数空格隔开)

5.ansible playbook

   对ad-hoc的编排,适合简单快速的任务)
   ansible playbook:一门编程语言,命令集合,yaml格式(声明配置,编排复杂任务,控制任务执行)
   支持特性:变量定义,顺序结构,选择结构,循环结构(编排任意复杂任务)

   例子:编写hello world  (选定host,指定登陆用户,使用shell模块输出hello world)
   vim test.yml --编写playbook
---
- hosts: test
remote_user: root
tasks:
- name: Hello World
shell: ls /root
ansible-playbook test.yml --执行playbook

   playbook基本结构:
   host:被操作的机器的正则
   remote_user:登录主机用户
   tasks:需要在主机上执行的任务

(1)变量:
a.变量定义:(vars: 定义变量,{{ 变量名 }} 变量用两个大括号括起来)
---
- hosts: test
remote_user: root
vars:
com: /root
tasks:
- name: Hello World
shell: ls "{{ com }}"

---
- hosts: test
remote_user: root
vars:
com: ls /root
tasks:
- name: Hello World
shell: "{{ com }}"
######变量:变量开头需要""引起来,所以一般用双引号引起来
b.系统变量
ansible hostname -m setup
{{ ansible_devices.sda.model }}
jinjia2模块

(2)playbook条件语句
a.when语句
tasks:
- name: "shutdown Debain flavored system"
command: /sbin/shutdown -t now
when: ansible_os_family = = "Debian"
b.bool值
vars:
epil: true
tasks:
- shell: echo "This certainly is epic!"
when: epic
- shell: echo "This certainly is not epic!"
when: not epic
c.with_items循环语句:
- name: add several users
user: name={{ item }} state=present groups=wheel
with_items:
- testuser1
- testuser2

d.with_nested嵌套关键字
- name: users access control
mysql_user: name={{ item[0] }}
priv={{ item[1] }}.*:All
append_privs=yes
password=foo
with_nested:
- [ 'alice','bob' ]
- [ 'clientdb','employeedb','providerdb' ]

e.有条件的循环:
tasks:
- command: echo {{ item }}
with_items: [ 0,2,4,6,8,10 ]
when: item > 5

6.playbook实战
   例子:安装python flask开发环境,具备数据库和缓存的功能
   vi init_flask.yml
---
- hosts: test
remote_user: root
become: true
tasks:
- name: install python for centos
yum:
name: "{{ item }}"
state: installed
with_items:
- python-devel
- python-setuptools
when: ansible_distribution == 'CentOS'
- name: install python for ubuntu
apt:
name: "{{ item }}"
state: latest
update_cache: yes
with_items:
- libpython-dev
- python-setuptools
when: ansible_distribution == 'Ubuntu'
- name: install pip
shell: easy_install pip
- name: pip install flask and redis
pip:
name: "{{ item }}"
with_items:
- flask
- redis

   安装mysql:
---
- hosts: test
remote_user: root
tasks:
- name: install mysql for redhat
yum:
name: "{{ item }}"
state: installed
with_items:
- mysql
- mysql-devel
- mysql-server
when: ansible_distribution == 'Redhat'
- name: install mysql for centos
yum:
name: "{{ item }}"
state: installed
with_items:
- mysql
- mysql-devel
- mysql-server
when: ansible_distribution == 'Centos'
7.ansible实战:安装zabbix
   例子:zabbix server安装,master和client(centos和Ubuntu各一个),zabbix进程启动正常
   vi test.yml
---
- hosts: test
become: true
tasks:
- name: install zabbix rpm
yum:
name: http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
state: installed
when: ansible_distribution == 'CentOS'
- name: install zabbix deb
get_url:
url:连接地址
dest: /tmp/zabbix.deb
when: ansible_distribution == 'Ubuntu'
- name: isntlal zabbix deb
apt:
name: /tmp/zabbix.deb
state: installed
when: ansible_distribution == 'Ubuntu'
- name: install zabbix server
yum:
name: "{{ item }}"
state: installed
with_items:
- zabbix-server
- zabbix-proxy-mysql
- zabbix-web-mysql
when: ansible_distribution == 'CentOS'
- name: isntall zabbix agent
apt:
name: zabbix-agent
update_cache: yes
state: installed
when: ansible_distribution == 'Ubuntu'
- name: config zabbix server
replace:
path: /etc/zabbix/zabbix_server.conf
regexp: DBUser=zabbix
replace: DBUser=root
when: ansible_distribution == 'CentOS'
- name: import db format
shell: zcat /usr/share/doc/zabbix-server-mysql-3.4.7/create.sqk.gz|mysql -uroot zabbix
when: ansible_distribution == 'CentOS'
- name: disable selinux
selinux:
state: disabled
when: ansible_distribution == 'CentOS'
- name: start zabbix server
systemd:
name: zabbix-server
state: started
when: ansible_distribution == 'CentOS'
- name: start zabbix agent
systemd:
name: zabbix-agent
state: started
when: ansible_distribution == 'Ununtu'
   shell安装zabbix命令:
   http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/路径下:
   rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
   yum -y install zabbix-server-mysql
   yum -y install zabbix-proxy-mysql
   yum -y install zabbix-web-mysql
   yum -y install mariadb-server
   systemctl start mariadb
   mysql -uroot -e "create database zabbix"
   sed 's/DBUser=zabbix/DBUser=root/g' -i /etc/zabbix/zabbix_server.conf
   zcat /usr/share/doc/zabbix-server-mysql-3.4.7/create.sqk.gz|mysql -uroot zabbix
   setenforce 0
   systemctl start zabbix-server

 

 


标签:name,部署,mysql,--,zabbix,ansible,自动化,root
From: https://www.cnblogs.com/huchao12/p/17556175.html

相关文章

  • nginx部署静态网页
    一、下载运行进入nginx官网下载页面:nginx下载地址,下载稳定版本 运行方式一:nginx下载目录双击允许nginx.exe运行方式二:nginx命令行启动,在下载目录地址栏输入cmd,输入startnginx任务管理器出现nginx.exe表示启动成功二、常用命令nginx-ssignal当信号可以是下列之一:......
  • 使用docker部署chatgpt-on-wechat
    目标:能够调用chatgpt接口并回复微信proxy部署(海外服务器不需要此选项)下载、配置proxymkdir-p/data/clashcd/data/clashwgethttps://github.com/Dreamacro/clash/releases/download/v1.17.0/clash-linux-amd64-v1.17.0.gzgzip-dclash-linux-amd64-v1.17.0.gzchmoda+......
  • 一键下载部署Office
    公司电脑重装了下系统,原来Office不能用了,用正版的话花钱太多,WPS很多功能还不能用,就在网上搜索有没有免费的。一查还真有,安装步骤已经安装完成,现在推荐给各位。下载地址:https://otp.landian.vip/zh-cn/download.htmlfficeToolPlus基于Office部署工具(ODT)打造,可以很轻松......
  • Docker部署Jmeter+Grafana+InfluxDB
      一:服务器配置Hosthssh505HostName180.184.138.70Port22Userroot前置条件:windows需通过softether客户端连接VPN本机ip:192.168.1.44二:安装docker安装命令:aptinstalldocker.io验证版本:2种方式docker--versiondocker-v出现版本信息则意味着安装成功:Docker......
  • QEMIU-基于CentOS7系统编译安装部署qemu 2.7.0 版本的环境
    【原文链接】QEMIU-基于CentOS系统编译安装部署QEMU环境备份原有的yum源配置cp/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.bak设置阿里云的yum源wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-7-浏览器的相关操作
    1.简介上一篇已经将playwright的元素定位大法基本介绍的差不多了,但是在Web的UI自动化的测试中,我们通常需要使用一些方法来操作浏览器,今天就跟随学习了解一下。这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解。2.层级在介绍......
  • Ubuntu部署Kubernetes
    Docker安装信任Docker的GPG公钥:curl-fsSLhttps://repo.huaweicloud.com/docker-ce/linux/ubuntu/gpg|sudoapt-keyadd-`添加软件仓库:sudoadd-apt-repository"deb[arch=amd64]https://repo.huaweicloud.com/docker-ce/linux/ubuntu$(lsb_release-cs)stable"......
  • mongodb4.4.22主从(副本集附仲裁节点)部署带认证模式
    环境:OS:CentOS7DB:4.4.22机器角色:192.168.1.102:29001主192.168.1.104:29001从192.168.1.105:29001仲裁节点 1.下载相应的版本https://www.mongodb.com/download-center/community我这里下载的是mongodb-linux-x86_64-rhel70-4.4.22.tgz 2.创建安装目录192.168.1.102......
  • 根据域名查询部署的服务
    1、根据域名解析的ip,获取对应的服务器2、找到服务器后,先找nginx,一般域名都是通过nginx转发到对应的服务3、在nginx配置找到对应的域名配置,如果直接在本地配置的前端代码,不需要走下一步了4、如果配置的是本地ip端口号,根据端口号查找对应的进程ss-ltnp'sport=:<端口号>'输......
  • centos7部署Vsftpd服务
    安装并开启自启yuminstall-yvsftpdsystemctlenablevsftpd修改配置文件配置文件位置:/etc/vsftpd/vsftpd.conf常用的需要修改以下////默认是允许匿名,需要关闭anonymous_enable=No//启用本地用户,默认是开启,这里不需要修改local_enable=YES//设置本地用户登陆......