ansible(1)

简介: Ansible概述:是一个配置管理系统(configuration management system),当下最流行的批量自动化运维工具之一.

Ansible概述:

 是一个配置管理系统(configuration management system),当下最流行的批量自动化运维工具之一.

常用的运维工具:

   ssh/puppet(ruby)/ansible(无客户端,中小规模)(python)/saltstack(master-minion)(python)大规模


Ansible的作用

:    批量部署,服务安装,日常备份


Ansible官方文档:

  https://docs.ansible.com/ansible/latest/index.html


Ansible的特性:

   无客户端软件,通过ssh远程管理

   安装后不需要启动服务

   依赖大量的Python模块扩展功能

   配置文件:/etc/ansible/ansible.cfg


Ansible基础架构:

   连接插件(connecter plugins):用来连接主机,连接被管理端

   核心模块(core modules):连接主机,实现操作,依赖于具体模块来执行

   自定义模块:用户自己开发的功能模块

   剧本(playbook):将多个任务组合成一个剧本,由ansible自动批量执行

   主机清单(host inventory):定义ansible管理的客户端主机范围

Ansible的命令格式:

   ansible 主机清单名 -m 调用的模块  -a 动作命令

 

#########################################################################


Ansible的配置:

ansible:192.168.8.10

web:192.168.8.20

nfs:192.168.8.30

rsync:192.168.8.40


ifdown ens33;ifup ens33

systemctl stop firewalld

systemctl disable firewalld

setenforce 0


1.安装ansible

(1)先配epel源:

epel源(扩展包):wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  

linux镜像源(组包):wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

(2)安装ansible

yum -y install ansible

    查看版本

ansible --version


2.配置清单

vim /etc/ansible/hosts

添加:

[web]

192.168.8.20

[nfs]

192.168.8.30

[rsync]

192.168.8.40


[benet:children]

web

nfs

rsync

保存退出


3.在ansible上配置ssh秘钥对访问

ssh-keygen -t rsa

ssh-copy-id root@192.168.8.20

ssh-copy-id root@192.168.8.30

ssh-copy-id root@192.168.8.40


########################################################################


调用常用模块

安装软件

修改配置

创建程序用户和组

创建目录,修改归属和权限

启动服务

挂载

测试


调用模块颜色显示:

   翔黄色     更改成功

   帽绿色  没有更改

   深红色  错误

   亮紫色  警告


列出所有模块

ansible-doc --list


查看ansible模块帮助

ansible-doc yum


1.command #仅支持简单语法命令,但语句中不能包含管道符等复杂元素

   ansible web -m command -a "hostname"

   ansible web -m command -a "useradd zhangsan"

 

2.shell   #command升级版,支持复杂语句,但不支持别名

   ansible web -m shell -a "echo 123 |passwd --stdin zhangsan"

 

3.yum    

   ansible web -m yum -a "name=httpd state=installed"

   注释:name  安装的软件包名,多个软件","分开

         state 服务状态

               installed,present    安装软件包

               removed,absent        卸载软件包

               latest            安装最新软件包

             

       

4.copy

   ansible benet -m copy -a "src=/etc/hosts  dest=/etc/hosts backup=yes"

   注释:

       src      源文件路径

       dest     目标文件路径

       backup  覆盖到目标文件前,是否提前备份

       content 添加文件内容

       group   指定属组

       owner   指定属主

       mode    指定权限



   案例:在ansible上远程配置rsync服务


   (1)修改rsync配置文件,并传到rsync服务器

   mkdir /etc/ansible/conf

   cd /etc/ansible/conf

   cp /etc/rsyncd.conf ./

   vim rsyncd.conf

   修改为:

   uid = root

   gid = root

   port 873

   address = 192.168.8.40

   hosts allow = 192.168.8.0/24

   max connections = 4

   pid file = /var/run/rsyncd.pid

   timeout = 900

   dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

   [backup]

       path = /backup

       read only = no

       auth users = rsync_backup

       secrets file = /etc/rsync.password

   保存退出

   ansible rsync -m copy -a "src=rsyncd.conf  dest=/etc/rsyncd.conf backup=yes"

 

   (2)启动rsync服务

   ansible rsync -m systemd -a "name=rsyncd state=restarted"

 

   (3)创建目录,并赋权,更改属主属组

   ansible rsync -m file -a "path=/backup owner=root group=root recurse=yes mode=777"

 

   (4)配置rsync服务器的密码文件:

   ansible rsync -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password owner=root group=root mode=600"

   ansible rsync -m shell -a "ls -l /etc/rsync.password"

   ansible rsync -m shell -a "cat /etc/rsync.password"

 

   (5)配置所有服务器的rsync连接密码文件

   ansible benet -m copy -a "content='1' dest=/etc/server.pass owner=root group=root mode=600"

 

   (6)测试:备份WEB的httpd.conf配置文件

   ansible web -m shell -a "rsync -avz --password-file=/etc/server.pass /etc/httpd/conf/httpd.conf rsync_backup@192.168.8.40::backup"



5.service(或systemd)

   ansible web -m service -a "name=httpd state=stopped"

   等同于

   ansible web -m shell -a "systemctl stop httpd"

   注释:    

       name  指定服务名

       state 指定服务运行状态

             started   开启服务

             stopped   关闭服务

             reloaded  重载服务

             restarted 重启服务

             enabled   是否开机自启

           

6.group

   在所有清单主机上创建组www,gid 666

   ansible all -m group -a "name=www gid=666"


   在所有清单主机删除组www

   ansible all -m group -a "name=www gid=666 state=absent"


7.user

   ansible all -m user -a "name=www"

   ansible web -m shell -a "echo 123 |passwd --stdin www"


8.file

   创建目录,并赋权,更改属主属组(recurse=yes可以由state=directory代替)

   ansible rsync -m file -a "path=/cwb owner=root group=root recurse=yes mode=777"

 

       创建文件

   ansible rsync -m file -a "path=/cwb/test.txt owner=root group=root state=touch  mode=777"

 

9.mount

   ansible nfs -m file -a "path=/nfs owner=root group=root recurse=yes mode=777"

   vim exports

   添加:

   /nfs 192.168.8.0/24(rw,sync,no_root_squash)

   保存退出

 

   ansible nfs -m copy -a "src=exports dest=/etc/exports"

   ansible nfs -m systemd -a "name=nfs state=restarted"

   ansible nfs -m systemd -a "name=rpcbind state=restarted"

 

   挂载nfs目录到web下的/var/www/html

   ansible web -m mount -a "src=192.168.8.30:/nfs path=/var/www/html fstype=nfs state=mounted"

   注释:    

       state 挂载状态

             mounted   挂载

             unmounted 卸载

           

10.script

   在ansible上编写任意测试脚本:

   ansible web -m script -a "/root/test.sh"    


相关文章
|
移动开发 数据可视化 小程序
利用APICloud studio3可视化开发工具开发企业管理app
利用 APICloud studio3 可以帮助我们快速创建并运行一个简单的应用,内容涉及开发工具使用、代码管理、应用预览、调试等。现在我们来通过 APICloud studio3 快速创建一个企业管理 app,帮助企业提供信息展示、案例展示、加盟申请等。
998 0
|
8月前
|
Java C++
课时124:assert断言
assert断言的含义以及使用 1.断言的引入 2.生活实例理解断言 3.Java 中断言的使用
203 2
|
10月前
|
Ubuntu NoSQL 关系型数据库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
299 29
|
10月前
|
弹性计算 运维 安全
自动化AutoTalk第十五期:自动化场景-多账号自动化场景下的AK管理方案
自动化AutoTalk第十五期探讨了多账号自动化场景下的AK管理方案。主要介绍了通过阿里云的实例角色和STS Token减少AK暴露风险,避免硬编码AK带来的安全隐患。最佳实践包括定期轮转AK、使用临时Token、分环境管理凭据,以及利用ECS实例角色实现安全的跨账号资源操作,确保在多账号架构中提升自动化程序的安全性和管理效率。
257 7
|
机器学习/深度学习 人工智能 物联网
hummingbird,一个便于将模型部署到边缘设备的Python库!
hummingbird,一个便于将模型部署到边缘设备的Python库!
281 1
|
数据安全/隐私保护 Docker 容器
【Docker】安装gitlab 傻瓜式复制安装
【Docker】安装gitlab 傻瓜式复制安装
210 0
|
C++
[C++ 从入门到精通] 13.派生类、调用顺序、继承方式、函数遮蔽
[C++ 从入门到精通] 13.派生类、调用顺序、继承方式、函数遮蔽
278 0
|
缓存 前端开发
前端知识笔记(三十六)———HTTP 缓存机制
前端知识笔记(三十六)———HTTP 缓存机制
260 0
|
Dubbo 安全 应用服务中间件
|
移动开发 数据可视化 前端开发
腾讯低代码可视化生成器,正式开源!
腾讯tmagic-editor是一个所见即所得的页面可视化编辑器,实现零代码/低代码生成页面,可以快速搭建可视化页面生产平台,让非技术人员可以通过拖拽和配置,自助生成H5页面、PC页面、TV页面,大大降低页面生产成本。
1503 0

热门文章

最新文章