ansible

ansible

   代码发布系统

ansible

  使用python 2.7开发的代码发布系统。是用来批量在远程主机上执行命令的。

安装

第一步:下载epel源

  ansible安装文件在epel源里边,需要去epel里边下载。命令如下:

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

  如果没有wget,需要先安装wget,命令如下:

yum install -y wget
第二步:安装
yum install -y ansible

ansible命令

查看帮助
ansible -h
命令格式
Usage: ansible <host-pattern> [options]
-a MODULE_ARGS # 模块参数
-C, --check # 检查语法
-f FORKS # 并发
--list-hosts # 列出主机列表
-m MODULE_NAME # 模块名字

  ansible通过ssh连接被控主机。

ssh认证方式

  ssh认证方式有两种,分别是:

    密码

    秘钥

  秘钥包含公钥私钥

生成秘钥对
ssh-keygen
编辑查看秘钥
vi /root/.ssh/id_rsa

  生产环境中也是使用秘钥连接的

将公钥发送到远程机器上
ssh-copy-id 192.168.12.25  # 192.168.12.25为目标主机IP

   私钥加密,公钥解密。

查看ansible生成的文件
rpm -ql ansible
查看包安装状态
rpm -qa ansible

ping

  ping使用的是ICMP协议。

  ansible的ping使用的是ssh。

ping单台机器
ansible 192.168.12.26 -m ping  # 192.168.12.26是目标主机的IP地址
ping多台机器
ansible 192.168.12.28,192.168.12.26 -m ping  # IP地址中间使用,(逗号)连接
ping所有机器
ansible all -m ping

hosts

hosts文件内容
# It should live in /etc/ansible/hosts
#
#   - Comments begin with the '#' character #是注释
#   - Blank lines are ignored 空行被忽略
#   - Groups of hosts are delimited by [header] elements []表示主机组
#   - You can enter hostnames or ip addresses  可以输入主机名或者ip地址
#   - A hostname/ip can be a member of multiple groups 一台主机可以被分配多个组
 www[001:006].example.com www001到www006.example.com
ping单个主机组
ansible web -m ping  # web为组名
查看指定主机组
ansible web --list-hosts  # web为指定的机组
并集

  同时对两个主机组进行ping测试,也可以理解为两个组的并集,下边两种方式都可以。

# 方式一
ansible web,db -m ping # 主机组之间用逗号连接

# 方式二 ansible "web:db" -m ping # 使用双引号包含主机组名,主机组名之间用冒号连接
 交集

  ping两个组之间的交集。

ansible "web:&db" -m ping
 差集

  ping两个组之间的差集。

ansible 'web:!db' -m ping  # 注意是单引号,必须。解释:web中有,db中没有的

host-pattern

  host-pattern有如下5种格式:

    单个机器

      直接使用ip地址等唯一标识的标志来指定目标主机。

    多个机器

      可以使用逗号(,)将多个IP地址或者组名连接起来。

    所有机器

      使用all来代替所有的主机。

    可以写一个组

      使用组名来代替指定的一组主机。

    可以写多个分组

      并集

        方式一:

          使用逗号(,)将两个组名连接起来。

        方式二:        

          冒号(:)将两个组命名连接起来。

      交集  :&隔开

        使用:&(冒号和&)将两个组名连接起来。

      差集(前边有,后边没有的) :!隔开

        使用:!(冒号和惊叹号)使用将两个组名连接起来。

查看模块信息

查看模块帮助信息
ansible-doc -h
命令格式 
 ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
 -j 以json格式显示所有模块信息
 -l 列出所有的模块
 -s 显示模块的摘要信息
 # 直接显示模块的所有帮助信息
以json的格式显示所有的模块信息
ansible-doc -j
列出所有的模块
ansible-doc -l
统计出模块的数量
ansible-doc -l|wc -l
查看指定命令的摘要信息

  这里查看的是ping命令,当然也可以是其他命令。

ansible-doc -s ping
查看指定命令的全部信息

  这里查看的是ping命令的全部的信息,当然也可以是其他命令。

ansible-doc ping

命令相关

显示分组的所有信息

  下边两条命令的作用相同,第一条是简化的写法,系统默认是的命令方式是command。

ansible web -a 'ls'
ansible web -m command -a 'ls'
chdir 

  在运行pwd命令之前切换到/tmp目录下,一般在使用编译情况下使用。

ansible web -a 'chdir=/tmp pwd'
 creates

   如果creates的文件存在,则不执行后面的操作。

ansible web -a 'create=/tmp pwd'
 removes

  如果remove的文件存在,则执行后面的操作。

ansible web -a 'removes=/tmp pwd'
使用ansible创建一个用户
ansible web -a 'useradd alex'  # 创建一个名为alex的用户
查看用户的创建状态

  方法一:

tail -1 /etc/passwd  # -1为数字1,显示倒数第一条

  方法二:

tail -1 /etc/shadow  # -1为数字1,显示倒数第一条
交互式设置密码

  给用户交互式设置密码,由于使用交互式,所以需要输入两遍密码。

passwd alex  # alex为用户名
非交互式设置密码

  一次设置密码,用户设置的密码为数字1。

echo '1' | passwd --stdin alex

shell

  < > | ; & $ 这些特殊字符command不支持。

指令方式为用户设置密码
ansible web -m shell -a 'echo "1" | passwd --stdin alex'  # 给alex用户设置密码为1
执行shell脚本
编写脚本文件a.sh

  下边的代码为脚本的内容,在当前目录创建一个名为xxoo的文件夹。

#!/bin/bash
mkdir /xxoo
执行脚本文件

  方式一:

ansible 192.168.12.25 -m shell -a '/root/a.sh'  # 执行shell脚本,前提是脚本有可执行的权限

  方式二:

ansible 192.168.12.25 -m shell -a 'bash a.sh'

  当脚本没有可执行的权限时,给脚本可执行的权限。

chmod +x a.sh  # a.sh为被执行的脚本文件
执行python脚本
编写python脚本a.py

  脚本代码意思为打印下面的那句古诗。

#!/bin/env python
#coding:utf-8

print('花径不曾缘客扫,蓬门今始为君开。')
执行python脚本
ansible 192.168.12.25 -m shell -a '/root/a.py'

  如果脚本文件没有执行权限,则增加执行权限。

script

创建脚本m.sh
#!/bin/bash
mkdir /ooxx
执行管控机上的脚本文件m.sh
ansible db -m script -a '/root/m.sh'  # db为组名
查看被管控机上的文件是否存在
ansible web -m script -a 'creates=/root/m.sh /root/m.sh'  # 查看的是被管控机上的文件是否存在,存在则不创建;不存在则创建ooxx文件夹、

文件相关的模块

copy

  复制文件到远程主机

ansible db -m copy -a "dest=/tmp/a.sh src=/root/m.sh"

 

 

 

 

file

 

 

saltstack

  使用python 2.7开发的代码发布系统。

openpyxl

  用python来操作Excel的模块。

puppet

  是由日本程序猿使用Ruby语言开发的代码发布工具。使用比较繁琐,需要配置很多文件,现在已经没落了,只有少数大公司现在还在使用。而且现在这些公司也在慢慢的想ansible和saltstack方向转。

 

转载于:https://www.cnblogs.com/ZN-225/p/10375873.html

09-17
### 关于 Ansible 的下载安装与使用教程 #### 一、Ansible 基础概念 Ansible 是一种简单而强大的 IT 自动化工具,用于配置管理、应用程序部署以及任务编排。它的设计原则是基于无代理架构(Agentless),即不需要在被控节点上安装任何软件。 - **Inventory 文件**: 这是一个包含受控服务器信息的文件,默认路径位于 `/etc/ansible/hosts`[^1]。该文件定义了主机列表及其分组方式。 #### 二、Ansible 的安装方法 以下是 Ansible 在 Linux 和 macOS 上的标准安装步骤: 对于 Ubuntu 系统: ```bash sudo apt update sudo apt install software-properties-common sudo add-apt-repository --yes --update ppa:ansible/ansible sudo apt install ansible ``` 对于 CentOS/RHEL 系统: ```bash sudo yum install epel-release sudo yum install ansible ``` macOS 用户可以借助 Homebrew 工具完成安装: ```bash brew install ansible ``` 验证安装成功与否可以通过以下命令检查版本号: ```bash ansible --version ``` #### 三、Ansible 的基本用法 ##### 1. 执行 Ad-Hoc 命令 Ad-Hoc 模式允许用户快速向远程主机发送单条指令并获取反馈。例如,查看目标主机上的 `~` 目录结构时可执行如下命令[^2]: ```bash ansible webserver -i ~/.ansible/hosts -m command -a 'ls ~' -k ``` 其中 `-k` 参数表示提示输入 SSH 密码而非依赖密钥认证。 ##### 2. 配置 Inventory 文件 默认情况下,Ansible 使用 `/etc/ansible/hosts` 作为 inventory 文件位置。如果需要指定自定义路径,则可通过 `-i` 参数实现。例如: ```ini [webserver] 192.168.1.10 ansible_user=root ``` ##### 3. Playbooks 编写入门 Playbook 是一组 YAML 格式的剧本脚本,用来描述一系列复杂操作序列。下面是一份最简化的 playbook 示例[^4]: ```yaml --- - name: Update all servers and reboot them hosts: webservers become: yes tasks: - name: Ensure system is up to date package: name: "*" state: latest - name: Reboot server after updates are installed reboot: ``` #### 四、跨平台支持——Windows 环境下的 Ansible 应用 尽管传统意义上 Ansible 更倾向于 Unix/Linux 平台的操作,但它同样具备良好的 Windows 支持能力。这主要得益于由社区开发者 jborean93 维护的一套专门针对 Microsoft 技术栈优化过的插件集合[^3]。这些组件让运维人员得以利用 PowerShell 脚本或者 WinRM 协议无缝衔接至企业内部混合云场景之中。 #### 五、容器集成解决方案-Ansible Bender 随着 DevOps 文化日益普及,越来越多的企业开始关注 CI/CD 流程中的镜像构建环节。为此官方推荐了一款名为 "Ansible Bender" 的第三方扩展程序[^5]。它允许使用者仅需编写一份声明性的 YAML 描述文档就能全自动完成 Dockerfile 替代工作流的设计思路。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值