irpas技术客

Ansible 快速入门_cpuCode_ansible快速入门

大大的周 5246

Ansible 快速入门 介绍Ansible 特点Ansible 组成结构 安装CentOS 7查看 ansible 版本 Inventory基于密码连接方法1方法2方法3 基于秘钥连接生成公私钥 临时指定 inventoryInventory 内置参数 Ansible Ad-Hocansible 命令格式host-pattern 格式主机的匹配组的匹配创建组查看各组组的所有主机匹配匹配组与非匹配组交集匹配组并集 预备工作常用命令测试节点是否配置正常使用特定用户执行测试命令使用特定的 SSH Key 执行命令使用密码执行命令执行 Sudo 命令执行 ad-hoc 命令执行 playbook查看 Playbook 包含的任务查看 Playbook 应用的主机从特定任务开始执行 Playbook执行 Playbook 中特定 tag 的任务执行时跳过 Playbook 中特定 tag 的任务查看 Playbook 执行过程中的所有输出查看 Playbook 执行过程中的 Debug 输出 playbook 常用模块YUM/DNF/APT 包管理器模块安装 MySQL 和 HTTP安装 nginx、 PostgreSQL Service 服务管理模块启动服务重启网络接口 COPY 复制文件模块File 文件模块LineinFile 文本查找模块Archive 归档模块Ping 测试模块Shell 模块cron 定时任务管理模块User 用户管理模块Fetch 远端文件抓取模块Template 构建模板

介绍

Ansible 是一款简单的运维自动化工具,只需要使用 ssh 协议连接就可以来进行系统管理,自动化执行命令,部署等任务

Ansible 特点 ansible不需要单独安装客户端,也不需要启动任何服务ansible 是 python 中的一套完整的自动化执行任务模块ansible playbook 采用 yaml 配置,对于自动化任务执行过一目了然 Ansible 组成结构 AnsibleAnsible PlaybookInventoryModulesPluginsAPI

Ansible

Ansible 的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行

Ansible Playbook

任务剧本(任务集),编排定义 Ansible 任务集的配置文件,由 Ansible 顺序依次执行,yaml 格式

Inventory

Ansible 管理主机的清单,默认是 /etc/ansible/hosts 文件

Modules

Ansible 执行命令的功能模块,Ansible2.3 版本为止,共有 1039 个模块。还可以自定义模块

Plugins

插件,模块功能的补充,常有连接类型插件,循环插件,变量插件,过滤插件,插件功能用的较少

API

提供给第三方程序调用的应用程序编程接口

安装 CentOS 7

使用 RPM 包管理器 ,下载 :

sudo yum install ansible

查看 ansible 版本 ansible --version

Inventory

Inventory 文件通常用于定义要管理的主机的认证信息,如 : ssh登录用户名、密码、key 相关信息

可以同时操作一个组的多台主机,组与主机组之间的关系都是通过 inventory 文件配置

配置文件路径为:/etc/ansible/hosts

基于密码连接 方法1 sudo vim /etc/ansible/hosts [hadoop] 172.18.40.114 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="xxxxxx" 172.18.40.115 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="xxxxxx" 172.18.40.116 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="xxxxxx" 172.18.40.119 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="xxxxxx"

测试服务之间的通信

ansible all -m ping

方法2 sudo vim /etc/ansible/hosts [hadoop] 172.18.40.11[4:6] ansible_ssh_user=root ansible_ssh_pass="xxxxx" 172.18.40.119 ansible_ssh_user=root ansible_ssh_pass="xxxxxx"

测试服务之间的通信

ansible all -m ping

方法3 [hadoop] 172.18.40.11[4:6] 172.18.40.119 [hadoop:vars] ansible_ssh_pass="xxxxx"

测试服务之间的通信

ansible all -m ping

基于秘钥连接

基于秘钥连接需要先创建公钥和私钥,并发送给被管理机器

生成公私钥 ssh-keygen 临时指定 inventory

编辑一个主机定义清单

vim /etc/dockers

[dockers] 172.18.40.114 ansible_ssh_pass='xxxxxx' 172.18.40.115 172.18.40.116

执行命令是指定 inventory

ansible dockers -m ping -i /etc/dockers -o

Inventory 内置参数 参数用途例子ansible_ssh_host定义hosts ssh 地址ansible_ssh_hosts = 192.168.1.11ansible_ssh_prot定义 hosts ssh 端口ansible_ssh_port = 3000
Ansible Ad-Hoc

ad-hoc : 临时的,在 ansible 中是指需要快速执行,并且不需要保存的命令 ( 一条命令 )

ansible 命令格式 ansible -h

ansible hadoop -m shell -a 'uptime' -o -m : 模块名字-a : 模块参数-o : 精简的输出

host-pattern 格式

目标 target 主机,主机组匹配方式

主机的匹配

一台目标主机

ansible 172.18.40.115 -m ping

多台目标主机

ansible 172.18.40.115,172.18.40.116 -m ping

所有目标主机

ansible all -m ping

组的匹配 创建组 sudo vim hosts

内容 :

[hadoop] 172.18.40.11[4:6] [hadoop:vars] ansible_ssh_pass="root$123" [cpu104] 172.18.40.115 172.18.40.119 查看各组 ansible hadoop --list

ansible cpu104 --list

组的所有主机匹配 ansible hadoop -m ping

ansible cpu104 -m ping

匹配组与非 ansible 'hadoop:!cpu104' -m ping -o

匹配组交集 ansible 'hadoop:&cpu104' -m ping -o

匹配组并集 ansible 'hadoop:cpu104' -m ping -o

预备工作

编辑主机列表文件 ( /etc/ansible )

sudo vim hosts

内容 :

[zookeeper] 172.18.40.114 172.18.40.115 [hadoop] cpu101 cpu102 cpu103 cpu104 常用命令 测试节点是否配置正常

ansible 可以使用 ping 模块检测节点配置是否正确,从而确保可以执行后续的命令

ansible all -m ping

使用特定用户执行测试命令

在命令后加入 -u username 指定使用哪个用户执行命令

ansible all -m ping -u cpu

使用特定的 SSH Key 执行命令

一些场景下,需要使用特定的 SSH 来执行命令,就可以通过 --private-key= 来指定 Key 的路径

ansible hadoop -m ping -u cpu --private-key=/home/cpu/.ssh/id_rsa

使用密码执行命令

主机没有配置 SSH 登陆,则需要使用密码登陆

ansible all -m ping --ask-pass

执行 Sudo 命令

节点执行命令时需要 sudo ,则可以通过配置 --ask-become-pass 配置 sudo 用户命令

ansible all -m ping --ask-become-pass

执行 ad-hoc 命令

实现在所有的主机上执行 uname -a 命令

ansible all -a "uname -a"

执行 playbook

ansible 运行编写好的 playbook

ansible-playbook myplaybook.yml 查看 Playbook 包含的任务

查看 Playbook 包含的所有任务

ansible-playbook myplaybook.yml --list-tasks 查看 Playbook 应用的主机 从特定任务开始执行 Playbook 执行 Playbook 中特定 tag 的任务 执行时跳过 Playbook 中特定 tag 的任务 查看 Playbook 执行过程中的所有输出 查看 Playbook 执行过程中的 Debug 输出 playbook 常用模块 YUM/DNF/APT 包管理器模块

包管理器模块可以帮助我们管理服务器节点上的软件包,从而省去手动安装软件包的时间

安装 MySQL 和 HTTP - name: install the latest version of Apache and MariaDB dnf: name: - httpd - mariadb-server state: latest 安装 nginx、 PostgreSQL - name: Install a list of packages yum: name: - nginx - postgresql - postgresql-server state: present Service 服务管理模块

服务管理模块可以用于管理系统当中安装的服务

启动服务 - name: Start service foo, based on running process /usr/bin/foo service: name: foo pattern: /usr/bin/foo state: started 重启网络接口 - name: Restart network service for interface eth0 service: name: network state: restarted args: eth0 COPY 复制文件模块

复制文件模块可以实现将本地文件复制到各主机,或将各主机文件收集到本地

File 文件模块

文件模块可以设置文件权限、修改文件状态

LineinFile 文本查找模块 Archive 归档模块 Ping 测试模块 Shell 模块 cron 定时任务管理模块 User 用户管理模块 Fetch 远端文件抓取模块 Template 构建模板


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #ansible快速入门 #特点Ansible #组成结构安装CentOS #7查看 #ansible