Ansiable新手入门大全

目录

1.什么是Ansiable?

2.Ansiable的安装与配置

2.1服务端要求

2.2被管理端要求

2.3安装Ansiable

2.4配置文件

2.5常用配置参数

3.Ansiable的基本使用

3.1Inventory主机清单

3.1.1ini和yaml格式

3.2主机和组(定义组)

3.2.2主机变量

3..2.3组变量

3.2.4分离主机和组变量到特定文件

3.3ansible的使用方式有两种

3.3.1命令行常用选项

3.4 SSH密码认证

3.5主机密钥检查

4.常用模块 shell copy file yum

4.1 Ping模块

4.2 command模块(默认模块)和shell模块

4.3 文件传输copy file 和 synchronize

4.4 copy模块 使用copy模块将服务端的文件传输到多台服务器

4.5 file模块  使用file模块更改客户端文件权限、属组、 创建目录

4.6synchronize增量同步

5. cron、systemd、setup

5.1定时任务管理(cron)

5.2管理服务service和systemd

5.3收集系统信息(set up)


1.什么是Ansiable?

Ansible这一强大的自动化运维工具。Ansible是基于Python语言开发的工具,通过SSH协议与远程主机通信,无需在被管理主机上安装额外的客户端/代理程序。您可以使用YAML语言编写剧本来实现对企业IT基础设施的自动化管理,这对于提高效率和减少人为错误非常有帮助。Ansible具有简洁易懂的语法和强大的功能,即使您不是专业开发人员也能快速上手。作为企业运维工程师,掌握Ansible将极大地提升您的工作效率和技能水平,帮助您更好地管理和维护企业的IT基础设施。

2.Ansiable的安装与配置

2.1服务端要求

ansible是要安装在Python2.6或2.7 Python3上或3.5以上的人和机器运行,管理机器不支持windows

2.2被管理端要求

需要一种通信方式ssh

2.3安装Ansiable

yum install ansible  (epel源)
pip install ansible  
https://release.ansible.com/ansible/

2.4配置文件

egrep -v "^$|^#" /etc/ansible/ansible.cfg
过滤出不带注释的
-v 是取反 
$$ 是空格
^# 开头是警号
^$ 是空行

2.5常用配置参数

inventory    /etc/ansible/hosts           主机清单inventory文件被管理主机的列表在这里定义
library      /usr/share/my_modules        存放ansibe模块的目录,一个库        
forks        5 /etc/ansible/ansible.cfg   并发数,多少个进程同时工作,可以根据控制主机的性能和被管理节点的数量来决定
* become       root                         远程用户的默认用户名
*remote_port  22                           链接被管理服务器的默认端口
*host_key_cheking   False                  是否检查主机密钥 yes/no
timeout      10                           ssh连接的超时时间,单位秒,可增大值
log_path     /var/log/ansible.log        默认不记录日志,需要开启指定日志文件,需要ansible用户有写入日志的权限
*paivate_key_file /root/./ssh/id_rsa       指定你私钥路径

3.Ansiable的基本使用

3.1Inventory主机清单

ansible可同时处理基础架构中的多台服务器,这些服务器的连接配置在ansible inventory区分实现,默认路径/etc/ansible/hosts,也可以使用命令行-i选项指定其他的文件清单

3.1.1ini和yaml格式

[webserver]
192.168.83.83  这就是ini格式

a:
  a:
    a:	通过缩进表示层级关系

3.2主机和组(定义组)

默认回加到ungrouped 这个组里面
all 代表所有主机
ungrouped 代表为定义主机组的主机 
便捷写法,如果有规律,例如:www.001.com www.002.com www.003.com
就可以写成 www[001:3].com
[webservers]
192.168.83.1
[dbservers]
192.168.83.2

ansible webservers(组名) -m shell -a "df -h" -k 
-m 指定模块
-k 输入ssh远程被连接主机的密码

3.2.2主机变量

可以定义变量传到服务器上去,可以应用变量进行区分这些主机,通过查看差异化地方
【webservers】
192.168.83.1 http_port=80
192.168.83.2 http_port=8080
ansible webservers -m shell -a "echo {{http_port}}"
ansible webservers -m shell -a "mkdir /tmp/{{http_port}}"
ansbile webservers -m shell -a "ls /tmp/"

3..2.3组变量

[webservers:vars]
server_name=www.zhangzhao.com
只要在webserver这个组里面都会引用这个变量,这样就不用每个机器都加变量了,
主机变量优先于组变量
ansible webservers -m shell -a "echo {{server_name}}" -k

3.2.4分离主机和组变量到特定文件

Ansible中的首选做法是不将变量存储在Inventory中,除了将变量直接存储inventory外,主机和组还可以变量还可以存储在相对于Inventory文件的单个文件中,采用yaml格式
2种定义方式:文件名就是叫组名 ,或者是针对某个主机IP
定义组名:mkdir /etc/ansible/group_vars
定义主机名: mkdir /etc/ansible/host_vars 

3.3ansible的使用方式有两种

ad-hoc 模式是指在终端直接输入命令,快速执行某个操作,但是不希望留存记录
playbook对于配置管理和部署更加灵活

3.3.1命令行常用选项

-v        就会输出更加详细的信息,vvv最详细一般用于产看dbug
-i        指定资产清单文件
-f        指定并发线程数
-u        指定你远程登录的用户
-k        远程用户密码
-b        sudo提权,默认是root
-K        输入你sudo提权的密码
ansible webservers -m shell -a "ls /root" -u aliang -k  -b -K 
先切换到普通用户阿良,在-b切换到root,在-K输入sudo的密码 
-e         设置变量
ansible webservers -e hello=123456 -m shell -a "{{hello}}" -k
-t        可以将输出结果指定到某个目录下
ansible webservers -e hello=123 -m shell -a "{{hello}}" -k -t /tmp
-C        运行检查不执行任何操作

3.4 SSH密码认证

默认情况下ansible连接ssh远程主机使用root用户,并会提示输入密码,该密码也可以直接在资产清单里指定,实现免交互。

两种:一个是直接在主机清单里指定,一个是ssh生成密钥,ssh-copyid

[webservers]
1.1.1.1  ansible_ssh_user=root  ansible_ssh_pass='123456'
[webservers]
1.1.1.1 ansible_ssh_user=root  ansible_ssh_key=/root/.ssh/id_rsa

3.5主机密钥检查

ansible默认启用主机密钥检查 解决方法
1.删除/root/.ssh/id_rsa
2.配置文件中禁用主机密钥检查
[defaults]
host_key_cheking = flase

4.常用模块 shell copy file yum

4.1 Ping模块

ansible all -m ping 探测目标主机也没有存活 

4.2 command模块(默认模块)和shell模块

该模块不支持管道和重定向的shell扩展语法,因此会用shell模块
ansible all -a "pwd"
ansible all -m shell -a "df -h|grep tmps;ls /root && echo 123"

4.3 文件传输copy file 和 synchronize

copy 拷贝模块
file  修改文件权限
synchronize  增量同步

4.4 copy模块 使用copy模块将服务端的文件传输到多台服务器

ansible all -m copy -a "src=/root/host dest=/tmp/host"
src:指定本地服务端的文件
dest:指定客户端的文件路径

4.5 file模块  使用file模块更改客户端文件权限、属组、 创建目录

ansbile webservers -m file -a "dest=/tmp/hosts mode=600 owner=aliang group="
dest:destination的缩写意思是目标
mode:指定权限
owner:属组
group:所属者
state:directory 创建目录
state:absent    删除目录

用file模块的好处就是它会自动判断状态

4.6synchronize增量同步

首先要下载rsync 无论是服务端还是客户端都要下载因为这个synchronize这个模块就是靠rcync这个进行同步的
什么是增量同步?比方说第一次你同步a和b两个文件,现在文件里有a b c三个文件,在增量同步一次,这次只会吧c加进去
ansible webservers -m synchronize -a "src=/data/html dest=/var/www/"

5. cron、systemd、setup

5.1定时任务管理(cron)

创建一个同步任务,每5分钟同步一下服务器的时间

ansible webservers -m cron -a "minute='*/5' day=1 job='ntpdate time.windows.com &>/dev/null' name='sync time' state=absent"

-a "" 指定时间
minute= 分
hour= 时
day= 日
month= 月
weekday= 周
job= 任务
name= 定时任务名称
user= 执行用户
staste= 「present|absent」

5.2管理服务service和systemd

  • service 是centos6管理服务命令,与systemd语法一样
  • systemd是centos7管理服务命令

确保web上启动服务

ansible webservers -m systemd -a "name=httpd state=started"
started 启动
stopped 关闭
restarted 重启
reloaded  重载

启动服务并设置开机自启

ansible webservers -m systemd -a "name=docker state=restarted enabled=yes daemon_reload=yes"
enabled= 设置开机自启
daemon_reload= 刷新配置文件

5.3收集系统信息(set up)

set up 模块用于收集系统信息,一般用于按照条件执行

ansible  all -m setup -a ""
 ansible all -m setup
$ ansible all -m setup -a "filter=ansible_nodename"
$ ansible all -m setup -a "filter=ansible_hostname"
$ ansible all -m setup -a "filter=ansible_domain"
$ ansible all -m setup -a "filter=ansible_memtotal_mb"
$ ansible all -m setup -a "filter=ansible_memory_mb"
$ ansible all -m setup -a "filter=ansible_memfree_mb"
$ ansible all -m setup -a "filter=ansible_os_family"
$ ansible all -m setup -a "filter=ansible_distribution_major_version"
$ ansible all -m setup -a "filter=ansible_distribution_version" $ ansible all -m setup -a "filter=ansible_processor_vcpus"
# 获取所有IP地址
$ ansible all -m setup -a "filter=ansible_all_ipv4_addtrsses"
$ ansible all -m setup -a "filter=ansible_architecture"
$ ansible all -m setup -a "filter=ansible_uptime_seconds"
$ ansible all -m setup -a "filter=ansible_processor*"
$ ansible all -m setup -a "filter=ansible_env"
 

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值