ansible yum安装以及基本用法

发布于 2020-04-27  692 次阅读


一、服务端:

1.安装第三方epel源

centos 6的epel

[root@ansible ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

[root@ansible ~]# rpm -ivh epel-release-6-8.noarch.rpm

2.安装ansible

[root@ansible ~]# yum install ansible -y

可能会报错

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

[root@ansible ~]# ll /etc/ansible

-rw-r--r-- 1 root root 8625 Oct 11 18:06 ansible.cfg

-rw-r--r-- 1 root root 1046 Oct 11 18:06 hosts
ansibles.cfg是配置文件,hosts是管理主机信息

3.ansible 配置

[root@ansible ~]#vim /etc/ansible/ansible.cfg

……

remote_port = 36000

private_key_file = /root/.ssh/id_rsa_storm1                            #密钥位置

……

##主机组定义

# vim /etc/ansible/hosts

[storm_cluster]

10.223.55.100:15322 ##--这个端口是指ssh端口,默认是22,改了会报错:"msg": "[Errno 111] Connection refused"

10.223.55.101

 

4.生成密钥

[root@ansible ~]# ssh-keygen -t rsa

[root@ansible ~]#echo "StrictHostKeyChecking no" > /root/.ssh/config


二、客户端:

密钥分配到各机器  /root/.ssh/authorized_keys

chmod 600 /root/.ssh/authorized_keys


三、测试:

1.测试连通性

[root@ansible ~]#ansible storm_cluster -m ping

2.批量发布远程命令

[root@ansible ~]#ansible storm_cluster -m command -a 'uptime'

3.复制文件到远程主机

[root@ansible ~]#ansible storm_cluster -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"

src为本地文件路径,dest为目标主机存放路径

4.远程重启服务

[root@ansible ~]#ansible storm_cluste -m service -a "name=nginx state=restarted"

name是服务名称

state是执行的操作,有: started\stopped\restarted

5.远程执行shell脚本

##将创建的脚本文件分发到远程

# ansible storm_cluster -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh owner=root group=root mode=0755"

##远程执行

# ansible storm_cluster -mshell-a "/tmp/test.sh"

参数:

Usage: ansible[options]

Options:

-m MODULE\_NAME, --module-name=MODULE\_NAME    要执行的模块,默认为 command

-a MODULE_ARGS, --args=MODULE_ARGS      模块的参数

-u REMOTE_USER, --user=REMOTE_USER ssh      连接的用户名,默认用 root,ansible.cfg 中可以配置

-k, --ask-pass      提示输入 ssh 登录密码,当使用密码验证登录的时候用

-s, --sudo      sudo 运行

-U SUDO_USER, --sudo-user=SUDO_USER sudo 到哪个用户,默认为 root

-K, --ask-sudo-pass    提示输入 sudo 密码,当不是 NOPASSWD 模式时使用

-B SECONDS, --background=SECONDS            run asynchronously, failing after X seconds(default=N/A)

-P POLL_INTERVAL, --poll=POLL_INTERVAL      set the poll interval if using

-B (default=15)

-C, --check    只是测试一下会改变什么内容,不会真正去执行

-c CONNECTION  连接类型(default=smart)

-f FORKS, --forks=FORKS    fork 多少个进程并发处理,默认 5

-i INVENTORY, --inventory-file=INVENTORY 指定 hosts 文件路径,默认 default =/etc/ansible/hosts-l SUBSET, --limit=SUBSET 指定一个 pattern,对已经匹配的主机中再过滤一次

--list-hosts        只打印有哪些主机会执行这个 playbook 文件:不是实际执行该 playbook

-M MODULE_PATH, --module-path=MODULE_PATH      要执行的模块的路径,默认为/usr/share/ansible/

-o, --one-line      压缩输出,摘要输出

--private-key=PRIVATE_KEY_FILE      私钥路径

-T TIMEOUT, --timeout=TIMEOUT  ssh 连接超时时间,默认 10 秒

-t TREE, --tree=TREE            日志输出到该目录,日志文件名会以主机名命名

-v, --verbose  verbose mode (-vvv for more, -vvvv to enable connection debugging)

再补充。

链接:https://www.jianshu.com/p/2e420f3eba2d

 

实战

任务

修改dns,由于无法确定原来的主机是否添加了nameserver,也不知道个数,所以建议先删除来追加到末尾

sed -i '/nameserver/d' /etc/resolv.conf

echo "nameserver=192.168.30.161\nnameserver=192.168.30.162"  >> /etc/resolv.conf

修改root密码

echo '123' | passwd stadin root

安装或者更新vmtools

https://www.linuxidc.com/Linux/2017-05/143323.htm