在生产环境中很少有连接外网的服务器,这里以ansible内网安装为例来介绍。
1、ansible的安装包存在于ansible的PPA中,如果要下载PPA(个人软件包存档),就必须要使用apt-add-repository这个命令,而software-properties-common软件中包含这个命令,所以下载顺序如下:
root@ubuntu:~# sudo apt install software-properties-common
root@ubuntu:~# sudo apt-add-repository ppa:ansible/ansible
root@ubuntu:~# sudo apt update
root@ubuntu:~# sudo apt install ansible
2、免密设置:我个人做个多次实验,不免密就报错,所以尽量做免密吧。
root@ubuntu:~/ansible2# ssh-keygen
或者
root@ubuntu:~/ansible2# ssh-keygen -t rsa
# 然后一路回车就好
ssh-copy-id [email protected]
注:ssh-copy-id [email protected]可能会报错,因为Ubuntu默认root做免密,可以换成普通用户,也可以把ansible主机的~/.ssh/id_rsa.pub的内容添加到另一台的~/.ssh/authorized_keys
内容后面做成手动免密。还可以对ssh的配置文件进行如下修改/etc/ssh/sshd_config,之后执行ssh-copy-id [email protected]
# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
改成
# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes
到此,测试ansible可以使用测试命令如下:ansible netflow -m shell -a’date’
离线模式安装ansible,重点在于攻克root@ubuntu:~# sudo apt-add-repository ppa:ansible/ansible这个命令,了解他是干嘛的就可以成功了。好吧我在文章最后在对他就行解释吧,这个难关我没有攻克,于是我决定用ansible的deb包进行安装。
1、在离线机器上的操作
root@ubuntu:~# sudo apt-get --allow-unauthenticated -y install --print-uris ansible | cut -d\' -f2 | grep http:// > /var/tmp/download-list
2、把/var/tmp/download-list传到有网的机器上,然后执行如下操作把所需要的依赖包下载到当前目录,最好在下载一个sshpass的包
sudo wget -i download-list
3、使用dpkg命令进行离线安装
sudo dpkg -i *.deb
注:如果wget下载后提示404等,那么可能是离线服务器的源的问题。把离线服务器换成阿里云源就可以了。
4、依照上面有网的操作做免密。
到此,离线安装结束。
5、不过我还查到一个下载依赖包的好办法(对ansible安装没有成功)
apt-cache depends XXX
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends XXX | grep -v i386 | grep "^\w")
dpkg -i *.deb
最近Ubuntu安装ansible遇到了这四个命令
root@ubuntu:~# sudo apt install software-properties-common
root@ubuntu:~# sudo apt-add-repository ppa:ansible/ansible
root@ubuntu:~# sudo apt update
root@ubuntu:~# sudo apt install ansible
1、什么是 PPA?
当你执行sudo apt-add-repository ppa:ansible/ansible
的时候, /etc/apt/sources.list 文件中会多出一些URL。/etc/apt/sources.list这便是存储库,我感觉类似于centos的yum源。
当您执行 sudo apt update 命令时,Ubuntu 系统就会使用 APT 工具检查在线存储库,并将有关软件及其版本的信息存储到缓存中。 当您使用 sudo apt install package_name 安装软件时,系统就会使用该信息从存储实际软件的 URL 获取该软件包。
在存储库中添加地址,然后去下载,如果存储库中没有关于某个软件包的信息,终端中将返回以下错误:(感觉非常像yum源)
E: Unable to locate package
2、为什么要使用 PPA?
Ubuntu 的存储库控制着用户可以在系统上获得的软件版本。但如果 ISV 或开发人员发布了软件新版本,Ubuntu 的官方存储库不可能立即提供。为了确保系统稳定性,官方源会检查新版本是否与系统兼容,所以在软件发布新版本后,短时间内用户是无法通过 Ubuntu 的官方存储库来获得最新软件版本的。
3、为什么 PPA 不适用于所有 Ubuntu 发行版?
PPA 意味着个人包存档,请注意个人这个词,它暗示了这是开发人员所独有的东西,并没有得到分发的正式认可。
Ubuntu 提供了一个名为 Launchpad 的平台,让软件开发人员能够创建自己的存储库,方便最终用户将 PPA 存储库添加到 sources.list。当用户更新系统时,Ubuntu 系统就能够知道这个新软件的可用性,而且可以使用标准的 sudo apt install package_name 命令来安装它,就比如:
sudo add-apt-repository ppa:dr-akulavich/lighttable
sudo apt-get update
sudo apt-get install lighttable-installer
将上述命令总结一下就是:
1]、sudo add-apt-repository
2]、sudo apt-get update 此命令更新软件包列表
3]、sudo apt-get install
现在让我们详细拆解一下:
sudo add-apt-repository ppa:dr-akulavich/lighttable
上述命令中并没有列出存储库的 URL,这是因为该工具旨在对有关 URL 的信息进行抽象化。如果你添加 ppa:dr-akulavich/lighttable,将会获取到 Light Table;如果添加的是 ppa:dr-akulavich,将能够获取到上层存储库中的所有存储库或软件包。
基本上,当您使用 add-apt-repository 添加 PP A时,相当于手动执行类似如下命令:
deb http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main
deb-src http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main
上述 2 条命令是将存储库添加到 sources.list 的传统方法,而在添加 PPA 时会自动完成对 sources.list 文件的配置,而无需用户知道确切的存储库 URL 和操作系统版本,相当于是自动化的。
而相当重要的一点就是,使用 PPA 时它不会更改 Ubuntu 系统中的原始 sources.list 配置文件,而是根据最佳实践在 /etc/apt/sources.list.d/ 目录中创建列表文件和对应(save 扩展名)的备份文件。
4、如何下载 PPA
需要在互联网上搜索 PPA 名称,如 ppa:dr-akulavich/lighttable,就可以获得 Launchpad 这一官方 PPA 托管平台中的结果。当然,你也可以直接到 Launchpad 网站中进行搜索。
由于 Gdebi 在处理依赖项方面要好得多,建议使用 Gdebi 而非软件中心来安装这些 DEB 文件。
5、如何删除PPA安装的软件
建议在删除 PPA 之前事先删除通过 PPA 安装的软件,如果你只删除 PPA,则已经安装的软件仍然会保留在系统当中,而且还无法获得任何更新。
那么问题来了,如何判断哪些应用程序是通过 PPA 安装的呢?
1、找出通过PPA安装的软件
Ubuntu软件中心是不包括这个功能的,我们可以通过新立得包管理器来找出通过 PPA 安装的软件:
sudo apt install synaptic
在新立得包管理器中选择源自:如下是启动命令
root@ubuntu:~# synaptic
找到包后,您可以直接用新立得包管理器来删除它们,或者执行终端命令来删除:
sudo apt remove package_name
删除用 PPA 安装的软件包后,您可以继续从 sources.list 中删除 PPA。
2、以图形方式删除PPA
转到软件和更新——然后转到其它软件选项卡——查找要删除的 PPA:
其区别在于:当您取消选择 PPA 条目时,系统会将 /etc/apt/sources.list.d 中的 ppa_name.list 文件注释掉;如果选择删除选项,就会直接删除 /etc/apt/sources.list.d 目录中的 ppa_name.list文件。