V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daijinming
V2EX  ›  程序员

在 Linux 平台下开发自动化部署工具,是不是 Python 才是最好的选择

  •  
  •   daijinming · 2019-02-19 13:34:25 +08:00 · 5021 次点击
    这是一个创建于 2102 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 linux 平台下开发自动化部署工具,是不是 python 才是最好的选择,入手 linux 才半年多,这方面也是才疏学浅,请不吝赐教

    33 条回复    2019-02-20 20:08:43 +08:00
    Hieast
        1
    Hieast  
       2019-02-19 13:40:09 +08:00
    我给 python 投一票
    liuzuo
        2
    liuzuo  
       2019-02-19 13:41:49 +08:00
    我在写 kotlin,其实想用 go。。。。。。
    tomczhen
        3
    tomczhen  
       2019-02-19 13:45:22 +08:00 via Android
    用什么语言主要还是取决于人员和项目,大多数情况下都是有限选择与项目亲和的语言、工具。
    webdisk
        4
    webdisk  
       2019-02-19 13:46:21 +08:00   ❤️ 2
    怎么我觉得 bash shell 好用呢
    SsuchingYu
        5
    SsuchingYu  
       2019-02-19 13:47:19 +08:00
    Python, Ruby, Go,都不错。
    37Y37
        6
    37Y37  
       2019-02-19 13:48:41 +08:00
    挑自己最熟悉的,如果都没有熟悉的那么 bash,python,go 会是不错的学习选择,我们开发了一系列的运维相关工具,用的 python
    daijinming
        7
    daijinming  
    OP
       2019-02-19 13:52:16 +08:00
    @37Y37 其实我们这边还真对 python\go,没有熟悉的,对 dotnet core 倒是熟悉,至于这个 bash 能方便的访问消息队列、数据库什么的吗?
    daijinming
        8
    daijinming  
    OP
       2019-02-19 13:53:01 +08:00
    @tomczhen 你觉得 dotnet core 怎么样
    daijinming
        9
    daijinming  
    OP
       2019-02-19 13:54:02 +08:00
    @webdisk bash shell 没怎么接触过,能详细的介绍下吗,我这边需要操作文件、访问数据库、消息队列
    alvin666
        10
    alvin666  
       2019-02-19 13:54:32 +08:00 via Android
    Python 就是一个胶水语言,各种库能干各种语言能干的事,还能很容易地写出一些基本的逻辑,比较适合。
    tomczhen
        11
    tomczhen  
       2019-02-19 14:03:18 +08:00 via Android
    @daijinming PowerShell 应该足够强大了,跨平台需求可以选择 PowerShell core,.net 亲和。由于没有.net core 的具体实践,根据之前接触到情况看,TFS 应该有解决方案,如果不选 TFS 应该可以找一下巨硬相关的最佳实践文档参考一下。
    smallgoogle
        12
    smallgoogle  
       2019-02-19 14:05:41 +08:00
    觉得 go 好用。。。自身部署就简单。
    w7938940
        13
    w7938940  
       2019-02-19 14:07:55 +08:00
    Ruby
    daijinming
        14
    daijinming  
    OP
       2019-02-19 14:12:42 +08:00
    @smallgoogle 这个我倒是听说过,之前就算是后起之秀。用 go 执行 shell 命令,比如调用 docker 这方面的资料是否多那
    xomix
        15
    xomix  
       2019-02-19 14:24:13 +08:00
    其实都可以,但是你 google 一下就知道 python 的资料丰富全面,所以用什么我也不用多说了。
    hoyixi
        16
    hoyixi  
       2019-02-19 15:00:04 +08:00
    很多自动化工具都是 Ruby 写的~不很复杂的简单任务,可能 Linux Shell 一个小脚本就搞定了,用其它脚本语言反而兜圈子~

    没有好不好,关键看适不适合。比如你是 Ruby 程序员,再学个 Python 去写部署?显然不合适~

    如果都没啥基础,Python 可能上手快,找现成的资源更容易,而且开发长期维护的、重复使用的、通用工具的话,Shell 可能有点痛苦,Ruby 代码灵活(多人合作的话,如果对该语言熟练程度不够,你看别人代码可能会蛋疼),Python 中规中矩。 个人倾向于 Python~
    kzfile
        17
    kzfile  
       2019-02-19 15:02:24 +08:00
    我直接 docker 部署了
    GiantHard
        18
    GiantHard  
       2019-02-19 15:12:36 +08:00 via Android
    我觉得 fake.build 挺好,感觉就是看个人喜好跟团队喜好吧
    daijinming
        19
    daijinming  
    OP
       2019-02-19 15:30:11 +08:00
    @hoyixi 初学者对于 python 有中奇怪的感觉 ,一般 linux 都预装 python2 ,但是书本都教授 python3,自动化工具采用那个版本比较合适那?另外可能是开发.net 给的想法,python 做自动化工具是开启一个 web 服务那,还是一个控制台应用?
    ilgharkus
        20
    ilgharkus  
       2019-02-19 16:08:16 +08:00
    @daijinming #19
    从 2018 年开始,大部分 Linux 发行版预装 Python2 和 Python3。从长远角度来看,推荐使用 python3。
    原因请戳这里: https://pythonclock.org/
    :-)
    webdisk
        21
    webdisk  
       2019-02-19 19:49:23 +08:00   ❤️ 1
    mritd
        22
    mritd  
       2019-02-19 22:05:38 +08:00 via iPhone
    @daijinming #14 调用 docker 你就不要用命令了,直接用 docker 的 sdk 啊,docker 就是 go 写的
    j0ck1e
        23
    j0ck1e  
       2019-02-19 22:22:33 +08:00
    linux 自动化工具一般用来解决什么问题啊?
    iwtbauh
        24
    iwtbauh  
       2019-02-20 00:04:21 +08:00 via Android
    相对于 bash shell,我更倾向于使用 POSIX shell,因为 POSIX shell 是可移植的。
    iwtbauh
        25
    iwtbauh  
       2019-02-20 00:07:37 +08:00 via Android
    @daijinming #7

    把访问消息队列的接口封装成的 C/C++/...程序,并从 shell 调用

    访问数据库可以直接调用数据库客户端,以 mariadb 为例

    mysql -u$USER -p$PASS $DATABASE <<EOF
    把 sql 语句放到这里
    EOF

    怎么防止注入看我前两天刚回复的一个帖子
    zbl430
        26
    zbl430  
       2019-02-20 09:18:21 +08:00
    go 编译 xxxx
    运行 $ ./xxxx
    EscYezi
        27
    EscYezi  
       2019-02-20 09:38:52 +08:00 via iPhone
    其实 PHP 也是可以的……毕竟都是脚本语言
    julyclyde
        28
    julyclyde  
       2019-02-20 10:56:56 +08:00
    这类东西还需要去开发,基本上你已经错了
    Hasal
        29
    Hasal  
       2019-02-20 11:49:04 +08:00
    要看负责部署工具开发的团队技术水平,通常来讲部署与运维相关,也就是看运维团队技术水平。
    前几年 python 选择的比较多,大部分运维都会 Python,对工具上手开发、维护都比较容易。
    以我所在公司为例,最开始是 python,后来转到 Go,用了一阵发现 Go 招人没那么容易(其实是钱没给到位),目前已经换成 Java,招人容易多了。
    yuhr123
        30
    yuhr123  
       2019-02-20 11:54:26 +08:00
    简单的就 bash
    ps1aniuge
        31
    ps1aniuge  
       2019-02-20 15:26:08 +08:00   ❤️ 1
    使用 powershell,python 没有命令行。py 在系统运维脚本这块,弱于 powershell。

    使用 powershell,bash 参数 tab 补全,太 tm 麻烦。属性补全不行,python 没有参数不全。go 没有参数补全,或者说 go 参数补全依赖于 bash。

    使用 powershell,支持强类型,shell 不行。使用 powershell 的 yaml 模块,读取.yaml 配置文件。
    操作文件----自己的特长。
    访问数据库---通过如 mysql 客户端,或 mysql 的。net 的 dll。
    消息队列---通过如客户端,

    支持中文脚本名,参数名,别名。猪都能懂。 如:dq 读取 xxx.ps1 -队列
    入群技术支持:183-173-532

    问:目前哪些 linux 能安装上 powershell ?
    答:
    ◦Windows 10 IoT Core(arm32 的 cpu,本质上是 win,树莓派硬件上的 win10)
    ◦Raspbian Stretch(arm32 的 cpu,树莓派官方操作系统 Raspbian,基于大便,所以叫树莓便。)
    ◦MAC OS X 10.11
    ◦Ubuntu 14.04/16.04/18.04
    ◦Debian 8.x/9.x
    ◦CentOS 7.x/RHEL 7.x/Fedora26 及更高版本
    ◦open SUSE 42 及以上 /SUSE Linux Enterprise Server 12 SP2 及以上
    ◦Docker。LINUX 发行版中,安装容器 dockerd,docker 中运行 powershell。
    ◦Arch Linux ( arch linux 没有版本号)
    ◦Linux AppImage 容器(portable application single binary) https://github.com/probonopd/AppImageKit
    ◦Kali Linux
    ◦alpine Linux
    maxmin
        32
    maxmin  
       2019-02-20 16:42:12 +08:00
    go -> kubernetes 还要干啥?
    HangoX
        33
    HangoX  
       2019-02-20 20:08:43 +08:00
    没吧,我就懒得再弄一门语言,直接用的 groovy 搭配 grape
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5486 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 03:27 · PVG 11:27 · LAX 19:27 · JFK 22:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.