note:在这之后博主的实验环境都是使用源码包安装的Ansible环境。

1.配置文件优先级

在运行ansible命令时,命令将会按照预先设定的顺序查找配置文件。
(1)ANSIBLE_CONFIG:首先,ansible命令会检查环境变量,及这个环境变量将指向的配置文件。可以通过导入环境变量的方式来做修改,例如:export ANSIBLE_CONFIG=/directory_path
(2)./ansible.cfg:其次,将会检查当前目录下的ansible.cfg配置文件。
(3)~/.ansible.cfg:再次,将会检查当前用户home目录下的.ansible.cfg配置文件。
(4)/etc/ansible/ansible.cfg:最后,将会检查在用软件包管理工具安装ansible时自动产生的配置文件。

如果是通过操作系统软件包管理工具或pip安装,那么你在/etc/ansible目录下应该已经有了ansible.cfg配置文件;如果你是通过GitHub仓库安装的,在你赋值的仓库中examples目录下可以找到ansible.cfg,可以把它拷贝到/etc/ansible目录下。

2.使用环境变量方式来配置

大多数的ansible参数可以通过设置带有ANSIBLE_开头的环境变量进行配置,参数名称必须都是大写字母,如下配置项:
export ANSIBLE_SUDO_USER=root

设置环境变量之后playbook可以直接引用。

3.设置ansible.cfg配置参数

常见配置参数:

ansible_ssh_host 定义host ssh地址 ansible_ssh_host=192.168.1.117
ansible_ssh_port 定义hosts ssh端口 ansible_ssh_port=5000
ansible_ssh_user 定义hosts ssh认证用户 ansible_ssh_user=yadmin
ansible_ssh_pass 定义hosts ssh认证密码 ansible_ssh_pass='123456'
ansible_sudo 定义hosts sudo用 户 ansible_sudo=yadmin
ansible_sudo_pass 定义hosts sudo密码 ansible_sudo_pass='123456'
ansible_sudo_exe 定义hosts sudo路径 ansible_sudo_exe=/usr/bin/sudo
ansible_connection 定义hosts连接方式 ansible_connection=local
ansible_ssh_private_key_file  定义hosts私钥 ansible_ssh_private_key_file=/root/key
ansible_shell_type 定义hosts shell类型 ansible_shell_type=zsh
ansible_python_interpreter 定义hosts任务执行python路径 ansible_python_interpreter=/usr/bin/pyhon2.6
ansible_*_interpreter 定义hosts其他语言解析器路径 ansible_ruby_interpreter=/usr/bin/ruby

配置Linux主机SSH无密码访问

如果ansible服务端与其下的主机没有配置互信,那么在做ansible的执行访问的时候那就需要你在hosts文件或者inventory文件或者在指令中添加需要访问主机的密码了。这里为了之后的实验我们还是先做SSH互信访问。

4.1生成秘钥

#ssh-keygen -t rsa

4.2将秘钥拷贝到预管理的节点上

#ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.116.130

尝试ssh root@192.168.116.130发现还是不行。查看被管理节点上的日志。
这里写图片描述

错误的属组关系,因为这台机器上部署了devstack,root目录有附加权限:

属组有额外的写权限,去掉就好:

#chmod g-w /root

附注:以root用户为例,在配置root用户互信的时候/root/.ssh/目录除了目录属主(root)可以具有write权限以外,属组和其他用户都不能对root目录和.ssh目录具有write权限。authorized_keys文件的权限应该为600。

5.ansible的简单实例

博主的整个实验环境都是在github上下载的源码部署的ansible环境,所以有些操作是pip或者Mac上不一样的,请酌情根据自己机器环境实验。

启用ansible,如果使用github安装的源码包则需要使用env-setup启动

source ./hacking/env-setup -q #这里目录是以ansible源码包为相对目录下
export ANSIBLE_SUDO_USER=root
echo "127.0.0.1" > ~/ansible_hosts
export ANSIBLE_HOSTS=~/ansible_hosts

修改主机与组配置

#vim /etc/ansible/hosts
#web1
#devstack
192.168.116.129
192.168.116.130
[webservers]
#web1
#devsack
192.168.116.129
192.168.116.130

对单台机器ping操作:

#ansible 192.168.116.130 -m ping

这里写图片描述
对组器进行ping操作:
这里写图片描述

-m是加载模块参数。这里我们加载的是ping模块来尝试与机器ping。

在这里测试时在控制主机与被管理节点之间配置了SSH证书信任。如果没有用证书认证,则需要执行ansible命令时添加-k参数,在提示“SSH password:”时输入root(默认)账号密码。实际生产环境中,大多数更倾向于使用Linux普通用户账户进行连接并通过sudo命令实现root权限,格式为:
ansible webservers -m ping -u ansible -sudo

在被管理节点上批量执行命令

在用户home目录下创建一个资源清单文件inventory.cfg内容如下:

# cat inventory.cfg
[webservers]
192.168.116.129
192.168.116.130

用ansible的shell模块在webservers组的个服务器上显示“hello ansible!”命令如下:

# ansible webservers -m shell -a '/bin/echo hello ansible!' -i inventory.cfg

用ansible的command模块实现同样的结果

#ansible webservers -m command -a '/bin/echo hello ansible!' -i inventory.cfg
配置Ansible环境note:在这之后博主的实验环境都是使用源码包安装的Ansible环境。1.配置文件优先级在运行ansible命令时,命令将会按照预先设定的顺序查找配置文件。 (1)ANSIBLE_CONFIG:首先,ansible命令会检查环境变量,及这个环境变量将指向的配置文件。可以通过导入环境变量的方式来做修改,例如:export ANSIBLE_CONFIG=/directory_p
01ansible基础 标签(空格分隔): ansible后 文章目录01ansible基础环境部署修改主机名配置yum源自动补齐安装tab什么是ansible 环境部署 被管理主机几乎不用做任何操作,只要开启ssh服务,允许远程登录 修改主机名 03修改主机名 exit 退出重新登录一次 可以显示修改完成 配置yum源 先挂载光盘 再配置源 vi /etc/fstab 04挂载光盘 05挂载光盘 06yum两个软件包位置 07配置两个yum源 自动补齐安装tab tab更多命令
ansible-vsphere-management 此存储库的目的是使用Ansible提供vSphere环境的自动化。 此存储库中的大多数任务最初将作为win_shell任务编写,这需要Powershell和PowerCLI 。 有许多特定于Ansible模块,但是其中大多数缺少功能或根本无法使用。 我的目标是能够从头开始构建具有许多用于定义基础结构的不同选项的vSphere环境。 另一个重点是使用win_shell模块,我想确保任务具有幂等性,以便win_shell一堆Powershell和PowerCLI命令。 而是建立逻辑,使其仅在确实需要完成某些操作时才执行操作。 当前的问题是,某些(如果不是大多数) win_shell任务显示为更改,但是,如果您观看vSphere主机任务,除非需要进行某些更改,否则您不会看到任何更改。 此仓库将持续不断地进行中,因此不要指望完美。 注意:随着这一进程的进行,您将注意到围绕严格策略执行的关注日益增长。 其背后的原因是因为目标应该是将环境中的几乎所有内容都定义为代码。 如果在代码之外进行了手动更改,则可能导致无法管理的环境。 通过执行严格的
ansible-role-vcsa 使用ovftool部署VMware Platform Service Controller或vCenter Server Appliance。 该角色需要以下(Pip)模块。 pyVmomi 这个角色正在大力发展中,因此变量可能经常更改。 目前,以下变量是通过defaults / main.yml设置的,否则是必需的。 注意:在调用此角色之前,必须由vars文件或其他机制设置非默认变量download_site。 download_site必须提供URL基础(例如 ),从中可以获取下载文件(例如ISO文件或类似文件)。 有关感兴趣的文件,请参见defaults / main.yml。 the_one_task_template the_one_task vcenter_host vcenter_user vcenter_p
Ansible剧本和模块,用于在ESXi和VyOS上部署Mirantis OpenStack实验室。 git clone https://github.com/ianunruh/ansible-mos-lab.git cd ansible-mos-lab # Install Ansible and Python vSphere client pip install -r requirements.txt # Copy and customize sample variables to your environment cp vars.yml.sample vars-MYENV.yml vim vars-MYENV.yml # Deploy environment ./run-playbook.sh vars-MYENV.yml deploy.yml
安装包含以下文件: 2018/10/10 17:11 11,775,406 ansible-2.7.0rc4.tar.gz 2018/10/12 17:18 104,964 asn1crypto-0.24.0.tar.gz 2018/10/15 08:58 42,575 bcrypt-3.1.4.tar.gz 2018/10/12 16:46 438,498 cffi-1.11.5.tar.gz 2018/10/12 16:42 449,577 cryptography-2.3.1.tar.gz 2018/10/11 09:26 55,579 ecdsa-0.13.tar.gz 2018/10/12 17:08 40,048 enum34-1.1.6.tar.gz 2018/10/16 10:16 0 files.lst 2018/10/12 17:21 172,698 idna-2.7.tar.gz 2018/10/12 16:58 33,051 ipaddress-1.0.22.tar.gz 2018/10/15 16:31 378,470 Jinja2-2.7.3.tar.gz 2018/10/11 09:22 14,356 MarkupSafe-1.0.tar.gz 2018/10/11 09:27 1,207,299 paramiko-2.4.2.tar.gz 2018/10/12 16:32 118,725 pyasn1-0.4.4.tar.gz 2018/10/12 16:52 158,295 pycparser-2.19.tar.gz 2018/10/11 09:16 446,240 pycrypto-2.6.1.tar.gz 2018/10/12 17:27 3,351,016 PyNaCl-1.3.0.tar.gz 2018/10/11 14:11 17,496,336 Python-2.7.15.tgz 2018/10/11 09:18 270,607 PyYAML-3.13.tar.gz 2018/10/11 09:15 854,871 setuptools-40.4.3.zip 2018/10/11 09:28 81,203 simplejson-3.16.0.tar.gz 2018/10/12 17:13 29,860 six-1.11.0.tar.gz 2018/10/11 14:52 599,727 yaml-0.2.1.tar.gz
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接...
本系列记录使用ansible初始化部署生产环境主机的各项过程 本系列生产主机使用《CentOS6实验机模板搭建部署》和《CentOS6重置网卡克隆后的自适应脚本(二)》预部署,CentOS7系统类似 本系列环境需要一台Gitlab服务器保存ansible代码和生产项目代码 本系列环境需要一台Nginx服务器作为文件共享服务器 操纵主机简单部署: 依据《CentOS7实验机模板搭建部署》克隆一台CentOS7作为操纵主机,部署安装ansible HOSTNAME=ansible_ops
对于配置 Windows 主机,Ansible 提供了一些模块和功能,使管理和配置变得更加简单。下面是一些在 Ansible配置 Windows 的步骤: 1. 确保 Ansible 控制节点已经安装并配置好。Ansible 控制节点可以是 Linux 或 macOS 系统。 2. 在 Ansible 控制节点上安装 `pywinrm` 模块,它是与 Windows 进行远程管理的关键模块。可以使用以下命令安装它: pip install pywinrm 3. 在 Ansible 控制节点上创建一个 `inventory` 文件,用于定义要管理的 Windows 主机。在该文件中,您可以列出 Windows 主机的 IP 地址或主机名。 4. 配置 Ansible 的 `ansible.cfg` 文件,指定 `inventory` 文件的路径和其他相关配置。 5. 创建一个 Playbook 文件(通常使用 YAML 格式),定义要在 Windows 主机上执行的任务。Playbook 文件中可以使用 Ansible 提供的多个模块来安装软件、配置服务等。 6. 在 Playbook 文件中,可以使用 `winrm_connection` 模块来指定与 Windows 主机建立连接的认证方式和其他连接参数。 7. 运行 Ansible 命令,使用 `-i` 参数指定 inventory 文件的路径,并指定要运行的 Playbook 文件。例如: ansible-playbook -i inventory playbook.yml 这些步骤只是一个概述,具体的配置和任务取决于您的需求和环境。您可以根据实际情况调整和扩展这些步骤。您可以参考 Ansible 的官方文档和示例 Playbook 来获得更详细的指导和示例代码。