ansible基础

ansible

1.概述

ansible是基于python语言开发,配置管理和部署应用的工具。批量的配置,部署,管理"上千台"主机 (实际一次100台左右),ansible只要在一台主机上就可以对其他主机进行操作。

(1)功能

  • 实现远程连接主机
  • 批量配置,批量操作,ansible可以对主机进行组划分,也可以把名下所有的主机进行划分,进行批量操作
  • 远程自动化运维(脚本--->playbook)

(2)ansible的工作模式

没有固定的客户端,不是C/S

使用模块来进行工作,ansible有很多模块,copy shell... 真正在主机上执行任务的是模块。

(3)ansible的特性

幂等性,计算机中的概念,在幂等操作中,无论执行多少次,结果都是一样的,多次执行相同的操作,不会产生不同的结果。

在ansible中,如果操作符合幂等性,那么不会对目标主机产生额外的副作用。

(4)ansible的组件

  • lnventory 主机清单 主机组

  • modules 模块*

  • plugins 插件

  • playbook 剧本(脚本)*

(5)ansible的优缺点

优点:部署快,只要能上网,或者有源码包,安装部署很简单;基于yaml格式编写的脚本,同一台服务器上多次执行同一个任务没有任何副作用。

缺点:语法要专门学;主机和控制主机必须都是linux,至少有两台服务器,主机和server。

2.安装

#安装ansible (ubuntu系统)

apt -y install ansible #在主机192.168.206.30上安装

#免密登录

ssh-keygen -t rsa

apt -y install sshpass

sshpass -p '1' ssh-copy-id [email protected] #-p 登录密码

sshpass -p '1' ssh-copy-id [email protected]

#配置文件

mkdir /etc/ansible

cd /etc/ansible

vim hosts

web

192.168.206.50

web1

192.168.206.55

#主机50在web组,主机55在web1组
#如果不想要设置免密登录,可以手动创建ansible.cfg

vim ansible.cfg

defaults

host_key_checking = False #禁止使用ssh的秘钥检查

inventory=/etc/ansible/hosts #指定主机清单的文件

forks = 20 #同时可以对多少主机进行配置,默认是5,可以提高执行速度

pipelining = True #减少对ssh会话中的操作,提高性能

strategy = free #任务会立即对下一个主机并行执行,不用等待其他主机完成

retry_files_enabled = False #如果任务失败,禁用自动重试的功能

vim hosts

web

192.168.206.5[0:9] #表示50,51,52,53...59

all:vars\] #组内所有主机统一用root登录,登录密码为1,端口为22 ansible_user=root ansible_password=1 ansible_port=22 #如果是centos系统,yum -y install ansible之后在/etc/ansible下有配置文件 直接修改即可 vim /etc/ansible/ansible.cfg #71行取消注释 host_key_checking = False vim hosts \[web

192.168.206.5[0:9] #表示50,51,52,53...59

all:vars\] #组内所有主机统一用root登录,登录密码为1,端口为22 ansible_user=root ansible_password=1 ansible_port=22

3.ansible模块

command模块

就是在目标主机执行命令,不支持管道符,也不能使用重定向。----默认模块

ansible all -m command -a 'chdir=/opt tar -xf nginx-1.22.tar.gz'

ansible 固定开头

all:<组名,ip,all,> 声明操作的对象

-m 指定模块

command 就是模块名

-a 指定参数(指定操作)

'chdir=/opt tar -xf nginx-1.22.tar.gz': 具体要执行的命令

chdir=/opt 声明目标主机的目录

creates 判断指定的文件是否存在,如果存在,不执行后续的操作

removes 判断指定的文件是否存在,如果存在,执行后续的操作

shell模块

是command模块的升级,但是可以使用管道符,可以重定向还可以使用连接符链接多个命令。

可以用 && 或者 ; 连接多条命令

cron模块

分、时、日、月、周

minute/hour/day/month/weekday

-m cron

name 计划任务的名称 不是必须的

job 计划执行的命令

state: present 表示添加,默认就是添加,可以不写

absent 表示移除

user和group

-m user

-m group

name 用户名或者组名 必有参数

state=present/absent 创建/删除

uid 数字

gid 数字

shell 默认就是/bin/bash

create_home yes/no 是否替换用户的家目录

remove=yes/no 删除用户时是否删除家目录

password 创建用户的登录密码

system yes/no 表示用户是否是系统用户

copy模块

dest: 文件复制到目标主机的位置

src: 源文件,主机的文件 --->目标主机

mode: 修改目标文件权限

owner: 文件的所有者

group: 文件的所在组

content: 复制输出的内容到目标主机,使用content就不能使用src

如果复制目录,源文件的路径是目录,目标主机的路径也必须是目录才可以复制

file模块

和copy有相似之处,

mode: 修改目标文件权限

owner: 文件的所有者

group: 文件的所在组

path----> 目标主机的文件路径

state:

link 做软连接 touch 创建 absent 删除

#特殊情况下才会有src

src ----> 指定创建的文件为软连接

hostname和ping

hostname 设置目标主机的主机名

ping 测试目标主机的连通性

yum/apt模块---安装和卸载

ansible web -m apt -a 'name=nginx' #安装

ansible web -m apt -a 'name=nginx state=absent' #删除

ansible web -m shell -a 'apt -y install nignx' #安装用shell模块也可以

service模块

也可以用command或者shell模块---相当于systemctl 对服务的状态进行控制

name=软件名

enabled=true--->开机自启

state:

started/stopped/restarted 开/停/重启

runlevel=40 设定开机自启的运行级别,数字越大,优先级越高

#ubuntu安装软件完毕自启,cnetos要设置开机自启

iptables模块

iptables模块 -- 支持centos和ubuntu

firewalld -- 仅支持centos

script模块

指定本地的脚本,然后脚本中的命令在目标主机执行,结果也是输出到目标主机。

创建完脚本后要赋权

setup 模块

收集节点信息,查看目标主机的配置信息

通过facts组件收集

filter是过滤,不加filter就显示全部

相关推荐
风行無痕12 分钟前
Ubuntu Linux系统配置账号无密码sudo
linux·服务器·ubuntu
驱动小百科1 小时前
WiFi出现感叹号上不了网怎么办 轻松恢复网络
网络·智能路由器·wifi出现感叹号怎么解决·wifi无法上网·电脑wifi
好多知识都想学1 小时前
协议路由与路由协议
网络·智能路由器
SZ1701102311 小时前
中继器的作用
服务器·网络·智能路由器
chenxy021 小时前
如何快速分享服务器上的文件
运维·服务器
重启就好2 小时前
【Ansible】模块详解
linux·服务器·ansible
Huazzi.2 小时前
Ubuntu 22虚拟机【网络故障】快速解决指南
linux·网络·学习·ubuntu·bash·编程
熙曦Sakura2 小时前
【Linux网络】HTTP
linux·网络·http
毒果3 小时前
网络安全:账号密码与诈骗防范
网络·安全·web安全
八股文领域大手子3 小时前
SSL/TLS 证书与数字签名:构建互联网信任的详解
网络·网络协议·ssl