惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Security @ Cisco Blogs
H
Hacker News: Front Page
P
Privacy International News Feed
N
News and Events Feed by Topic
T
Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
S
Schneier on Security
K
Kaspersky official blog
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
Security Latest
Security Latest
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
L
Lohrmann on Cybersecurity
Jina AI
Jina AI
P
Proofpoint News Feed
AI
AI
雷峰网
雷峰网
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 叶小钗
Webroot Blog
Webroot Blog
Apple Machine Learning Research
Apple Machine Learning Research
SecWiki News
SecWiki News
罗磊的独立博客
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
Google DeepMind News
Google DeepMind News
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
S
Security Affairs
Blog — PlanetScale
Blog — PlanetScale
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
月光博客
月光博客
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Securelist
W
WeLiveSecurity
T
Troy Hunt's Blog
A
Arctic Wolf
博客园 - 司徒正美

Yee's Blog

腾讯云/轻量云 安装ArchLinux的个人记录 记录我的联想M720Q Arch Sway窗口管理器的安装和配置过程 Jenkins Linux安装 腾讯课堂、钉钉在线网课视频直播回放下载离线播放 Ceph块设备对RBD块设备操作LVM创建PV时报错 Ceph映射RBD块设备 2020年9月26日前端部门Vue考核 2020年9月26日后端部门Python考核 Nginx反向代理下载传输超过1G大文件时断开问题 Windows Server 2019 Datacenter M720q 安装记录 Ceph块设备基础及快照、克隆操作 从Ceph集群中删除OSD节点 Centos8配置 chrony NTP服务端及客户端 搭建Ceph集群 Ceph硬件准备 OSD与Pool池的常见操作及管理 Ceph用户管理 MacOS睡眠管理——让你的Mac睡的更香 初中古诗文必背篇目 Ansible 技巧之场 Ansible 包含和导入文件 Ansible 学习文档 Ansible 主机模式 Ansible 角色 Ansible 调整连接数 Splunk数据搜索和报表 Ansible 常用模块 Ansible 变量和事实 Ansible 任务控制 Ansible Playbook 42Team-Flask框架-HTTP协议快速了解 42Team-Flask框架-路由和视图 42Team-Flask框架-请求与响应 42Team-Flask框架 42Team-Flask框架-Flask介绍 42Team-Flask框架-使用Pycharm来构建一个全新的Flask项目 How to install RHEL8(Centos) on Dell R710/R610 server Centos8安装Docker报错解决方案 Centos8安装Docker后容器内无法访问网络 Docker或Podman容器内无法解析DNS问题多种解决方案 使用NetworkManager来管理树莓派Ubuntu系统网络以及个人的体验优化 Linux 存储设备的挂载及识别 Firewalld 防火墙常用指令教程-常用规则(禁止Ping | 放行端口) Linux 查找系统中的文件 Linux 守护进程和控制服务 Linux SSH远程访问 42Team小组_Linux基础培训课件 如何在AmazeUI中当改变select标签后触发Vue方法的问题 使用Docker部署安装WordPress博客平台 在Raspberry树莓派中搭建NFS存储服务器 在 树莓派 Linux 中搭建匿名 danted socks5 代理服务器 HTTP与HTTPS区别随笔 Bash/Shell学习笔记
Ansible 基础概念
本文作者: YeeFire · 2020-05-31 · via Yee's Blog

Ansible的基本环境、受控主机清单、Ansible的配置文件。

查看Ansible环境信息

absible --version

查看ansible控制端的环境信息,其中包括默认模块和自定义模块的文件目录以及ansible和python的版本。

[student@workstation ~]$ ansible --version
ansible 2.8.0
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/student/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Apr 3 2019, 17:26:03) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]

构建ansible清单

如果要用Ansible管理其他主机,需要将受控主机添加到清单中。

sudo vim /etc/ansible/hosts

使用静态清单配置

静态清单可以使用多种文件格式,包括INI和YAML。以下使用INI样式格式做例子。

在INI文件开头直接添加主机IP/域名

servera.yeefire.com
serverb.yeefire.com
192.168.1.211
192.168.1.232

将主机进行分组

[china-server]
blog.yeefire.com
server2.yeefire.com

[us-server]
us1.yeefire.com
us2.yeefire.com

分组嵌套

分组嵌套需要在组名处使用:children后缀。分组嵌套可以写在分组之前,他们之间没有绝对顺序。也可以编写与分组嵌套相同的组名,在使用这个名字的时候会将分组嵌套中所有的主机和该名字所对应的组名的主机包括在内。

[china-server]
blog.yeefire.com
server2.yeefire.com

[us-server]
us1.yeefire.com
us2.yeefire.com

[webservers:children]
china-server
us-server

[webservers]
test.app.yeefire.com

简化主机配置

如果要配置范围主机,一个个添加会很麻烦,通常他们都会有固定的格式。
使用[START:END]就可以范围。

[us-server]
us[001:009].yeefire.com

[test]
test[a:d].yeefire.com

localhost是一种特殊的存在,ansible知道他是本机,如果对localhost操作,ansible不使用ssh进行连接,这样可能导致执行结果和其他主机不一致。解决方案也很简单就是将localhost添加到inventory

ansible模块

模块是ansible的核心功能,近乎一些的操作都和模块相关。

使用ansible-doc可以阅读模块帮助手册

常用模块列表

模块类别 模块 描述
文件模块 copy 将本地文件复制到受管主机
- file 设置文件的权限和其他属性
- lineinfile 确保特定行是否在文件中
- synchronize 使用rsync同步内容
软件包模块 package 自动检测操作系统的软件包管理器管理软件包
- yum yum管理软件包
- apt apt管理软件包
- dnf dnf管理软件包
- pip 从PyPI管理Python软件包
系统模块 firewalld 使用firewalld管理任意端口和服务
- reboot 重新启动计算机
- service 管理服务
- user 添加、删除、管理用户账户
NetTools模块 get_url 通过HTTP、HTTPS、FTP下载文件
- nmcli 管理网络
- uri 与Web服务交互

ansible -m setup

setup 模块用来收集主机详尽信息。

ansible -m setup localhost

在本地运行ansible的setup模块,收集本地的详尽信息。

ansible配置文件

有四种方式来让ansible读取配置文件,优先级依次由高到低:

使用环境变量

使用ANSIBLE_CONFIG环境变量,使用环境变量的优先级是最高的,也就是说如果Ansible运行时发现该变量存在,那么会直接使用它而不会理会其他三个位置的配置文件。

使用./ansible.cfg

如果在当前执行ansible的目录下存在ansible.cfg配置文件,那么在当没有配置环境变量时,就会使用此配置文件。(可以配置目录结构来方便管理不同的群组)

使用~/.ansible.cfg

使用当前用户Home目录下的ansible.cfg隐藏文件,在当前两个都没有配置的情况下,如果在用户家目录下存在配置文件则会使用此处的配置文件运行ansible。

使用/etc/ansible/ansible.cfg

使用/etc/ansible/ansible.cfg全局配置文件是优先级最低的选择,在上面三个地点都没有找到ansible配置文件时则会使用此处的配置文件。如果这个文件也不存在的话……那就完全按照ansible的默认来操作了。

配置文件参数

inventory主机清单

在配置文件中配置好了主机清单后,在运行临时命令或者Playbook时就可以不用手动指定主机清单。

参数值这里inventory可以是文件,也可以是文件夹。当参数是文件夹时,会使用文件夹下全部的inventory主机清单。

[defaults]
inventory = inventory