温馨提醒

1
2
这不是教程、只是我的备忘录罢了、如果你能看懂那只能说明你很NB
如果你想学习ansible、可以前往官方地址:https://docs.ansible.com/ansible/latest/

Ansible安装及配置

点击看笔记

安装Ansible

在CentOS上

1
2
sudo yum install -y epel-release
sudo yum install -y ansible libselinux-python

在Fedora上

1
2
sudo yum install -y epel-release
sudo yum install -y ansible

在 Ubuntu系统上配置PPA并安装 Ansible

1
2
3
4
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

在 Debian 上安装 Ansible

1
2
3
4
deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
sudo apt update
sudo apt install ansible

相关版本信息及配置文件路径

1
2
3
4
5
6
7
[root@mst ~]# ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/sha re/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (R ed Hat 4.8.5-28)]
1
2
3
/etc/ansible/ansible.cfg
/etc/ansible/hosts
#这两个文件路径记住

Ansible认证方式

学习学习
1
2
3
Ansible认证方式(ssh)就两种:
密码认证 传统认证、安全性一般、适用于绝大部分场景
密钥认证 有一定的局限性、安全性强、适用于部分场景

密钥认证

使用ssh-keygen生成私钥和公钥、全部回车默认即可

1
ssh-keygen -t rsa

配发密钥、执行后让你输入目标机器的密码

1
ssh-copy-id $username@$ip

密码认证

1
2
3
/etc/ansible/ansible.cfg
/etc/ansible/hosts
配置密码认证需要用到这两个配置文件

设置默认不检查key

1
sed -i "71a host_key_checking=False" /etc/ansible/ansible.cfg         
1
2
3
4
为什么要设置默认不检查key?
因为如下
Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host.
使用SSH密码代替密钥是不可能的,因为主机密钥检查是启用的,而sshpass不支持这一点。请将该主机的指纹添加到known_hosts文件中以管理该主机。

hosts文件配置、相关参数

参数 参数类型 参数说明
ansible_host 主机地址 远程主机IP地址
ansible_port 主机端口 指定ssh连接端口、默认为22
ansible_user 主机用户 指定默认远程连接用户
ansible_password 用户密码 指定用户密码

备份一下hosts文件

1
cp /etc/ansible/hosts /etc/ansible/hosts.back

配置hosts文件

1
echo "" > /etc/ansible/hosts                 #里面都是一些配置方法、没什么有用的东西、那就全部清空了
1
2
3
4
5
6
7
8
9
10
[root@mst ~]# cat /etc/ansible/hosts
[test0]
192.168.0.1 ansible_port=22 ansible_user=root ansible_password='password'
#如果需要指定端口、用户请使用test0
[test1]
192.168.0.1 ansible_password='password'
#如果默认端口为22、用户为root、可以简写成test1
[test2]
192.168.0.[1:100] ansible_password='password'
#如果机器非常的多、可以简写成test2

相关模块学习

点击看笔记

shell模块

  • shell模块和command功能类似,但可以识别特殊字符
    参数 释义
    chdir 执行命令前先进入到指定目录
    cmd 运行命令指定
    creates 如果文件存在将不运行
    removes 如果文件存在在将运行
    free_form 在远程主机中执行的命令,此参数不需要加
    executable 指定执行环境,默认为sh