翼度科技»论坛 云主机 LINUX 查看内容

Ansible的安装及简单使用

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
##                                                                                  Ansible的安装及简单使用 ##一.Ubuntu安装Ansible
  1. sudo apt update
  2. sudo apt install ansible
  3. #使用以下命令检查安装是否成功:
  4. ansible --version
复制代码

二.配置Ansible
  1. #进入配置文件目录
  2. cd /etc/ansible/
  3. ls
复制代码

文件含义

ansible.cfg   #ansible配置文件,默认基本不用动,全注释
hosts         #主机清单文件,存放被控端主机信息, 默认指定的hosts文件
修改ansible配置
  1. vim ansible.cfg
复制代码

把第七十一行的配置,取消注释。这一行的作用是当 Ansible 连接到新创建的虚拟机时,不会要求手动验证主机密钥,而是自动跳过验证,从而简化自动化部署过程。
添加主机列表清单
  1. vim hosts
复制代码

含义

第一段          #被控端主机ip
ansible_ssh_user=root  #ssh中setup模块的系统变量,指定为远程主机的用户为root
ansible_ssh_pass=123   #同上,为远程主机的root的密码
[web]:主机组的名称
1. 使用ping模块检测所有主机是否存活
  1. #执行
  2. ansible -i hosts web -m ping
复制代码
语句含义

-i hosts web     #指定我们ansible工具针对的是 hosts主机文件中的  web为我们刚才配置文件中的主机组
-m ping          #-m  指定使用的模块为ping,用于检测主机,返回pong
还要注意的是,此命令执行命令的路径是/etc/ansible,所以hosts可以不指定文件目录。如果在其他文件目录下执行命令则需要加上
该配置文件的根路径。ansible -i /etc/ansiblehosts web -m ping

2.ansible命令执行的过程说明



  • ansible会先加载配置/etc/ansible/ansible.cfg文件
  • 然后加载模块文件(如上面的ping模块)
  • ansible会将我们执行的命令或模块,生成一个临时的python的脚本文件,将这个脚本文件发送到被控端的家目录/.ansible/tmp/目录下,并授权执行
  • 执行完成后返回执行结果,并清除临时文件
3. 常用模块

1. command 模块

这个模块就是平时使用命令的习惯,比如ls、cd、pwd、cp、mv操作等等都可以实现,但是要注意的是\command模块是不支持正则及特殊符号的
并且该模块是默认附加的,也就是说。即使你不加-m command 也可以使用
  1. #查看web组所有主机下,/root目录内容
  2. ansible -i hosts web -m command -a "ls /root"
  3. #-a 是代表要执行的命令,相当于在所有主机上执行的
复制代码


如图,效果是一样的。
2. shell 模块

shell模块和command模块类似,但是支持正则及特殊符号。
  1. ansible -i /etc/ansible/hosts web -m shell -a "echo test > /home/1.txt"
  2. ansible -i /etc/ansible/hosts web -m shell -a "cat /home/1.txt"
复制代码

3. copy模块

拷贝文件,从ansible主机上把文件发送到被控端主机上
  1. ansible -i /etc/ansible/hosts web -m copy -a "src=/home/test_copy.txt dest=/home"
  2. ansible -i /etc/ansible/hosts web -m shell -a "ls /home"
复制代码


三.使用案例以及问题发现

给web组的主机安装docker
  1. #配置安装环境
  2. ansible -i /etc/ansible/hosts web -m shell -a "apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common"
  3. #添加密钥
  4. ansible -i /etc/ansible/hosts web -m shell -a "curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -"
  5. #添加阿里云国内镜像仓库地址
  6. ansible -i /etc/ansible/hosts web -m shell -a "add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release -cs) stable""
  7. #更新软件源,列出可安装版本
  8. ansible -i /etc/ansible/hosts web -m shell -a "apt-get update"
  9. ansible -i /etc/ansible/hosts web -m shell -a "apt-cache madison docker-ce"
  10. #安装指定版本docker
  11. ansible -i /etc/ansible/hosts web -m command  -a "apt-get install -y docker-ce=5:20.10.13~3-0~ubuntu-focal docker-ce-cli=5:20.10.13~3-0~ubuntu-focal"
  12. #重启并检查安装是否成功
  13. ansible -i /etc/ansible/hosts web -m shell  -a "systemctl restart docker && docker --version"
复制代码
问题:ansible在执行shell命令的时候,如果该命令在执行的时候出现提示键入y回车继续之类的情况时,会使该命令陷入死锁。
例:假如我这一步ansible -i /etc/ansible/hosts web -m command  -a "apt-get install -y docker-ce=5:20.10.133-0ubuntu-focal docker-ce-cli=5:20.10.133-0ubuntu-focal"这里采用apt-get install -y,其目的是跳过软件安装时的所以确认步骤,默认为y。如果安装时采用,apt-get install去安装docker,则会因为无法键入y而是web主机组的apt-get install命令陷入死锁,从而导致无法更新和下载其他包

来源:https://www.cnblogs.com/blogof-fusu/p/17639958.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具