标签: devops

Jenkins - (私有子网)WebHook与Github不会触发自动构建

问题:

我正在进行CI设置以配置github - Jenkins web钩子,用于在github上使用代码提交触发构建.以下是当前配置详细信息

  • 我的Jenkins位于AWS私有子网内
  • 我有插件:"GitHub Web Hook"配置了API URL,用户名和OAuth令牌,Test Credentials给出了成功消息.
  • 我在"构建触发器"下选择"在将更改推送到GitHub时构建"

Jenkins的工作与手动构建完美配合.但是当在github上完成代码提交时,它不起作用(自动构建触发器).

需要帮助:

  1. 我如何详细调试这种情况,如果"Git hub webhook"配置测试有效,我可以说git hub能够连接到我的Jenkins私有或它做其他测试吗?
  2. 请纠正/指导步骤以使其正常工作

git continuous-integration github jenkins devops

6
推荐指数
1
解决办法
2578
查看次数

使用saltstack创建AWS EC2实例映像?

有没有人尝试使用saltstack创建AWS AMI(图像).

我尝试使用它能够从现有的AMI创建新实例,但如何使用salt-cloud创建图像?

也尝试使用boto_ec2,但它给出了模块'boto_ec2'不可用的错误.

amazon-ec2 amazon-web-services salt-stack devops salt-cloud

6
推荐指数
1
解决办法
370
查看次数

在具有哨兵的AWS上设置Redis HA - 不同哨兵看到的redis节点最终无限循环

我们的设置

  • 每个AWS Sydney AZ上有3个redis哨兵一个
  • 具有主服务器和多个从服务器的2到500个redis节点,可使用AWS自动扩展组策略自动水平扩展
  • 1x写入将流量推送到主站的ELB
  • 1x读取将流量推送到从站的ELB
  • 1x Sentinel ELB将流量推送到哨兵
  • 1x辅导员(更多关于这个波纹管)

此设置在两个集群中复制,用于称为元数据缓存.我们想要部署更多集群.

主持人

是我们构建的python守护程序,它订阅了sentinels pub/sub并侦听+ switch-master消息.以下是协调人采取的行动:

  1. 检测并主控+ switch-master触发的故障转移
  2. 使用查询新主服务器的标记 SENTINEL get-master-addr-by-name mymaster
  3. 使用RedisClusterNodeRole = slave标记旧主服务器
  4. 使用RedisClusterNodeRole = master标记新的master
  5. 在我们的写ELB中添加新的master
  6. 从我们的阅读ELB中删除新的主人
  7. 从写ELB中删除旧主人
  8. 尝试将旧主服务器添加到我们的读取ELB中(如果服务器已关闭,这将失败,这很好)

问题

因为奴隶每天可以根据交通进出多次,所以我们最终会遇到属于同一个奴隶争夺同一奴隶的哨兵的一些奴隶.这是因为IP池在集群之间共享,并且据我们所知,从属ID是它们的IP.

这是复制的方法:

  1. 群集缓存具有IP 172.24.249.152的主服务器
  2. 群集缓存具有主故障转移提升从站,主机为IP 172.24.246.142.IP 172.24.249.152的节点现已关闭
  3. 群集元数据向上扩展,DHCP分配IP 172.24.249.152(群集缓存上的先前主服务器)
  4. 群集缓存将看到它的先前主服务器现在已启动,并将尝试将其重新配置为172.24.246.142(缓存群集上的新主服务器)的slave
  5. 簇的元数据将触发上的+ SDOWN 172.24.246.142和一段时间后接着是+从属可重新-发送给它的尝试重新配置它作为元数据群集从属一个-sdown
  6. 群集缓存将尝试执行与群集元数据在第5点上执行的操作相同的操作.

哨兵陷入无休止的循环中,永远为这种资源而战.即使我们只有一个哨兵小组管理具有不同主名称的两个redis群集,这种情况也会发生.这使我们相信哨兵不了解不同群集之间的资源,而只是分别对每个群集执行合乎逻辑的操作.

解决方案我们试过

  1. 触发a SENTINEL reset mymaster+ sdown事件后,尝试让哨兵忘记该节点.问题是,如果该集群正在执行主故障转移,它可能会生成竞争条件.我们成功地复制了这个假设,并且让哨兵不同步,其中一个指向一个主人,另外两个指向另一个.
  2. 将网络分成每个群集一个IP池.这是有效的,因为IP不会被重用,但是当我们需要一个新的集群时,它也会使事情变得更加灵活和复杂.这是我们最终要解决的问题,但我们希望尽可能避免这种情况.

理想的解决方案

  1. Redis哨兵提供SENTINEL removeslave 172.24.246.142 mymaster我们可以在每次有奴隶的+ sdown事件时运行.这将使该群集忘记那个奴隶曾经存在而不会产生副作用SENTINEL reset …

amazon-web-services redis autoscaling redis-sentinel devops

6
推荐指数
0
解决办法
862
查看次数

为什么Jenkins中的GIT插件无法连接到GIT存储库?

我试图使用GIT插件Jenkins从GIT中获取代码,并且该作业正在从属机器上运行.

MASTER 系统有 http_proxy=mycom.domain.com:80

SLAVE系统中没有http_proxy定义.

每当我在SLAVE机器中进行本地git clone时它都能很好地工作,但是从Jenkins我没有成功.

它抛出以下错误:

Building remotely on SLAVE in workspace /data/test
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url https://github.domain.com/Project-Digital/Project-eCommerce.git # timeout=10
Fetching upstream changes from https://github.domain.com/Project-Digital/Project-eCommerce.git
 > /usr/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials 
Setting http proxy: mycom.domain.com:80
 > /usr/bin/git fetch --tags --progress https://github.domain.com/Project-Digital/Project-eCommerce.git +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'
hudson.plugins.git.GitException: Failed to fetch from https://github.domain.com/Project-Digital/Project-eCommerce.git
    at …
Run Code Online (Sandbox Code Playgroud)

git github jenkins devops

6
推荐指数
1
解决办法
2万
查看次数

Snyk 和 Sonarcloud/SonarQube 的比较?

我需要对 Snyk 和 Sonarcloud/Sonarqube 的特性和功能进行比较,我唯一能找到的是速度比较:

https://snyk.io/blog/sast-tools-speed-comparison-snyk-code-sonarqube-lgtm/

....有谁知道两者之间是否有特性和功能的比较?如果是的话,请告诉我去哪里看?

预先非常感谢您对此提供的任何帮助。

sonarqube devops sonarcloud snyk devsecops

6
推荐指数
1
解决办法
3778
查看次数

Terraform云配置动态工作区名称

我正在使用 GitHub Actions 和 Terraform 构建 CI/CD 管道。我有一个如下所示的 main.tf 文件,我从多个环境的 GitHub 操作中调用该文件。我正在使用https://github.com/hashicorp/setup-terraform与 GitHub 操作中的 Terraform 进行交互。我有 MyService 组件,并且正在部署到 DEV、UAT 和 PROD 环境。我想在所有环境中重用 main.tf 并动态设置工作区名称,如下所示:MyService-DEV、MyService-UAT、MyService-PROD。terraform/cloud 块中不允许使用变量。我正在使用 HashiCorp 云来存储状态。

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 2.0"
    }
  }

  cloud {
    organization = "tf-organization"
    workspaces {
      name = "MyService-${env.envname}" #<==not allowed to use variables
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

更新

我终于成功地启动并运行了这个程序并提供了有用的评论。以下是我的发现:

  • TF_WORKSPACE 需要预先定义,例如:service-dev
  • 在自动化运行时,我没有让标签按照我想要的方式工作。如果我将 cloud.workspaces.tags 中的标签定义为“service”,则无法动态设置第二个标签(如“dev”)。在 init ['service', 'dev'] 期间需要这两个标签,以便 TF 自动选择工作区 service-dev。
  • 我最终使用 tfe 提供程序来自动设置工作区(带标签)。最后我还是需要设置 …

terraform devops hashicorp

6
推荐指数
1
解决办法
2107
查看次数

Terraform 源错误 - 错误:无法查询可用的提供程序包

我正在尝试使用 terraform 部署新的基础设施(第一次),但出现以下错误。我已经尝试了一切,但似乎没有任何办法可以解决问题。

\n

看起来它正在要求提供者hashicorp/azure

\n

有人可以帮忙吗?

\n
Initializing provider plugins...\n- Finding latest version of hashicorp/azure...\n- Finding hashicorp/azurerm versions matching "2.98.0"...\n- Installing hashicorp/azurerm v2.98.0...\n- Installed hashicorp/azurerm v2.98.0 (signed by HashiCorp)\n\xe2\x95\xb7\n\xe2\x94\x82 Error: Failed to query available provider packages\n\xe2\x94\x82 \n\xe2\x94\x82 Could not retrieve the list of available versions for provider hashicorp/azure: provider registry registry.terraform.io does not have a provider named registry.terraform.io/hashicorp/azure\n\xe2\x94\x82 \n\xe2\x94\x82 Did you intend to use terraform-providers/azure? If so, you must specify that source address in each module which …
Run Code Online (Sandbox Code Playgroud)

azure devops azure-devops terraform-provider-azure

6
推荐指数
1
解决办法
6590
查看次数

在开发与生产版本中自动更改 Vite 代理位置?

在我正在开发的单页应用程序中,我使用 Vite,在我的vite.config.ts文件中我有以下代理:

proxy: {
  '/v1': {
    target: 'https://127.0.0.1:8080',
    changeOrigin: true,
    secure: false
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法根据是否在生产环境中来改变这个目标?就像是:

proxy: {
  '/v1': {
    target: isDev ? 'https://127.0.0.1:8080' : 'https://api.example.com',
    changeOrigin: isDev,
    secure: !isDev
  }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,在我的本地环境中,我想针对本地服务器进行开发,这样我的 fetch API 调用就会fetch("/v1/get-posts")被转发到https://127.0.0.1:8080/v1/get-posts,但在我的生产构建(我通过vite build)中创建,它们将被转发到:https://api.example.com/v1/get-posts

这可以做到吗?如果可以,如何做到?

http-proxy typescript devops vite

6
推荐指数
1
解决办法
1万
查看次数

AWS CodeDeploy 代理未安装在 ubuntu 22.04 上

我尝试安装 codedeploy 代理ubuntu 22.04但不起作用。我已经ruby 2.6.0通过 rbenv 安装了。

ubuntu@ip-172-31-37-7:~$ sudo ./install --sanity-check  deb
I, [2022-08-10T06:26:28.905059 #47961]  INFO -- : Starting Ruby version check.
I, [2022-08-10T06:26:28.905394 #47961]  INFO -- : Starting update check.
I, [2022-08-10T06:26:28.905593 #47961]  INFO -- : Checking AWS_REGION environment variable for region information...
I, [2022-08-10T06:26:28.905770 #47961]  INFO -- : Checking EC2 metadata service for region information...
I, [2022-08-10T06:26:28.921018 #47961]  INFO -- : Checking AWS_DOMAIN environment variable for domain information...
I, [2022-08-10T06:26:28.921228 #47961]  INFO -- : …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services server aws-code-deploy devops

6
推荐指数
1
解决办法
5585
查看次数

DataDog 日志提取在 Kubernetes 集群上不起作用

我们按照这些说明使用 DataDog 的操作符在 Kubernetes 1.22 集群中设置 DataDog。这是通过 helm 安装的,没有任何自定义。

Operator、集群代理和每节点代理 Pod 均按预期运行。我们知道代理能够与 DataDog 端点成功通信,因为我们的新集群显示在 DataDog 的基础设施列表视图中。

然而,来自我们应用程序 Pod 的日志没有出现在 DataDog 中,我们正在努力找出原因。

我们确实确认了一些明显的事情:

  • agent.log.enabled在我们的代理规范中是正确的(下面包含完整的 YAML)。
  • 我们的应用程序 Pod 的日志存在于 中/var/log/pods/,并且包含我们期望的日志行。
  • DataDog 代理能够看到这些日志文件。

因此,代理与 DataDog UI 中可用的日志之间似乎出现了问题。有谁对如何调试这个有任何想法?


我们的代理配置:

apiVersion: datadoghq.com/v1alpha1
kind: DatadogAgent
metadata:
  name: datadog
  namespace: datadog
spec:
  agent:
    apm:
      enabled: false
    config:
      tolerations:
        - operator: Exists
    image:
      name: "gcr.io/datadoghq/agent:latest"
    log:
      enabled: true
    process:
      enabled: false
      processCollectionEnabled: false
  clusterAgent:
    config:
      admissionController:
        enabled: true
        mutateUnlabelled: …
Run Code Online (Sandbox Code Playgroud)

logging kubernetes datadog devops

6
推荐指数
1
解决办法
1891
查看次数