Reddit DevOps
266 subscribers
30.9K links
Reddit DevOps. #devops
Thanks @reddit2telegram and @r_channels
Download Telegram
DevOps Checklists - the grownup and gone to university of the roadmap.

Yep cheezy get your attention headline.

So I've just come across The Checklist Manifesto (thanks to Daves garage on YouTube)

What would be your checklists for your devoos work?

My current one is...

Take user story - check
Read the requirements - check
Git pull - check
Git branch - check
Write unit test - check (ish)
Git commit - check
Write Lambda - check
Gut commit - check
Red green refactoring Lambda with unit test check.
Git PR - check
Git merge - check
Dev build done - check
Write integration test - TBD
...
Deploy to prod - TBD
Review monitoring & logs - TDB
Have a cuppa (wait for complaints) - check


So on and so forth,

Thinking about it I could probably group them into sets of checklists with each checklust having a dependency on the previous ones being completed. Plus there are others for other types of DevOps work.

What checklists would you find useful?

https://redd.it/12wfojq
@r_devops
NoOps subreddit

Hey all,

I work for a cybersecurity company and I’m writing a blog post about DevOps and NoOps from the security point of view.

I’m fairly interested in the NoOps concept as it’s new to me so I checked if there is a subreddit dedicated to the subject but the ones I found are private.

Do you know if such a subreddit exists and if I can subscribe ?

Thx guys,
Cheers

https://redd.it/12wn1b2
@r_devops
How and where to Start?

As a undergrad what should be the ideal roadmap to learn and get into DevOps? Also what is like to work as a DevOps engineer

https://redd.it/12wncy0
@r_devops
Cloud Companion is now open-source!

I'm so excited to announce that I'm open-sourcing my cloud-management tool! I think that it is now in a good shape to be built easily and adapt to new features. Feel free to download the source-code and report any bugs or feature requests to https://github.com/ahmedyarub/cloud\_companion\_public/

All the feature requests would be scheduled and released as soon as possible.

https://redd.it/12wqw1t
@r_devops
Dynatrace end-to-end map flow

I'm trying to set up some sort of a dashboard in Dynatrace that would help teams identify where the major incident is happening. The team would like to see the smartscape topology view, but the system is so compex with many thousands of services and many more thousands of processes that at certain places the map is just solid gray from the amount of arrows.

The thing is that we need to educate people how to use this tool to help them in major incidents and at the moment we don't have a great way of displaying the end to end stack.

Has anyone came across a good way to do something like that in a big company?

Thanks in advance!

https://redd.it/12wmlbq
@r_devops
Overwhelmed


I am going through the process of attempting to get into a free tech program. We were told during the information session that no tech experience was required. It was a lie. The application took me about 1.5 weeks to complete as I reworked my answers constantly and did extensive research. Yesterday they sent me the materials for the interview I have this upcoming week. They want a presentation with diagrams on a specific topic and I am overwhelmed due to my lack of experience. I have taken a Intro to DevOps course on Coursera and some Scrum related courses on Skillsoft. I have been looking at YT videos and reading articles on varying types of Architecture as well. I am overwhelmed. If I got through this interview there would be one last presentation to do but I would have a month to prepare which I could handle and have completed by or before the due date. The class would start this summer and go till the late fall. I am not sure whether I should give up. I am terrified that I won't be prepared😞.

https://redd.it/12wt2ee
@r_devops
Choose hosting provider and possible CI/CD flow

Hello everyone,

I am currently building spring boot web app backend. I was thinking about possible hosting for it. If my app eventually receives a lot of traffic, it should receive around 25000 requests per day, about 1000 per hour.

My question is: what hosting service should I use in order not to have over-priced/over-complicated architecture? Of course I should keep in mind that there might be more requests if app grows. Currently my choosen stack is AWS Lambda. And for CI/CD I choose Github actions and Jenkins.

Thank you for the answers.

https://redd.it/12wsror
@r_devops
Career Opportunities Out of College

Hi! I’m currently a junior at a university and happened to land a DevOps internship for this summer. I originally looked at SWE and DE internships but with no luck. However, since I have a decent AWS knowledge, I got lucky with this DevOps opportunity. I don’t know if I will like it or not, but if I do and I end up going in the field, I’m curious about career prospects in this field. How’s the knowledge curve for junior roles? What’s TC like? Is on-call an often occurrence? How’s WLB compared to SWE? I would appreciate if any industry workers on this sub answered these questions. Thanks!

https://redd.it/12x0o0b
@r_devops
GitLab pipeline for a Java application that uses PostgreSQL and is compiled with Maven

I am kind of a newbie at making GitLab pipelines for [this](https://github.com/callicoder/spring-boot-postgresql-jpa-hibernate-rest-api-demo.git) Java application with a PostgreSQL database.

The application needs a PostgreSQL database named `postgres_demo`. I have successfully compiled the application (`mvn compile`), run tests (`mvn test)`, and built the package (`mvn package`) in my droplet via SSH with a postgresql docker container that I have run like that:
`docker run --name my-spring -e POSTGRES_PASSWORD=mypass -d -p 5432:5432 postgres`

Then via DBeaver I have created required database `postgres_demo` inside that container.

But when I try to use the latest Maven Docker container inside the pipeline, it can't connect to the database. Can you please provide an example of a pipeline that runs tests inside a Maven container with a PostgreSQL database?

So far I have this one:

variables:
MAVEN_OPTS: -Dmaven.repo.local=.m2/repository

image: maven:latest

stages:
- build
- test
- package
- deploy


cache:
paths:
- .m2/repository
- target

build_job:
stage: build
tags:
- docker

script:
- echo "Maven compile started"
- "mvn compile"


test_job:
stage: test
tags:
- docker

script:
- echo "Maven test started"
- "mvn test"

package_job:
stage: package
tags:
- docker

script:
- echo "Maven packaging started"
- "mvn package"


Deploy_job:
stage: deploy
tags:
- docker

script:
- echo "Maven deploy started"

https://redd.it/12wzz3i
@r_devops
Instant public URLs for debugging

I always found it difficult to expose a service running on a server by allowing some ports then remembering to turn them off after the job. It is also irritating to download some binary and then execute it and sign up for some service.

With a single command a public URL can be obtained to a localhost port now with https://pinggy.io :

ssh -p 443 -R0:localhost:8000 a.pinggy.io

Just replace 8000 with your port. This will give you an http / https link. It also has a nice terminal interface and a web ui to debug. Makes my life easier.

Screenshot:

https://imgur.com/a/VahFCza


FAQ: Doesn't it open up my system to the internet inviting attacks?
\-> No it just gives access to the port 8000 (or whatever you set) for HTTP requests only. No less secure than configuring your firewall to make port 8000 available to the internet.

https://redd.it/12x52j3
@r_devops
Best states to work in if you work in IT for example ccna holder and and have network eng/admin exp?

In what states (US)do positions like network engineer/network admin make more? Is that overall for Information technology positions or just isolated to networking? high cost of living to low cost of living ratio? What state would you move if it had to be onsite?

https://redd.it/12x554q
@r_devops
Senior with 3YOE - Roast My Resumee

resumee link

I have 3 YOE, my last company gave me the official "senior" title for selling me as a consultant.I still feel like I am a junior. Do you think it's counterproductive? In case should I remove it?

Recently got the AWS Solutions Architect SA-C003.I am not in the USA and I left the previous job for a DevOps internship in a top tier company US remotely, recently started. 3 months duration.

I really hope to continue to work for them, I'm working with AWS and I am afraid if they don't confirm me I have to find other jobs, is the resumee good enough?

Is 2 pages too long? Maybe I used the wrong template?

And if you notice the overlapping times, I am also studying in the meantime.
I don't feel ready for a senior role of course I will look for mid/junior role always in DevOps


https://redd.it/12x7jab
@r_devops
Error while deploying an application in glassfish application server?

Error occurred during deployment: Exception while loading the app : javax.ejb.CreateException: Initialization failed for Singleton ResourceLoader. Please see server.log for more details.

I am trying to deploy an .ear application into glassfish admin console. I am getting the above mentioned error.

The server.log is this:
https://pastebin.com/rD6QKBnk


Exception while loading the app : javax.ejb.CreateException: Initialization failed for Singleton ResourceLoader javax.ejb.CreateException: Initialization failed for Singleton ResourceLoader at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:476) at com.sun.ejb.containers.AbstractSingletonContainer.access$000(AbstractSingletonContainer.java:74) at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:647) at com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance(AbstractSingletonContainer.java:389) at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:219) at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:180) at org.glassfish.ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:158) at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:166) at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:500) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539) at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:360) at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534) at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565) at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:360) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464) at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722) at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:253) at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:231) at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:275) at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:133) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.iss.onethod.invoke(Method.java:498) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) at
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:152) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103) at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) at org.glassfish.jersey.internal.Errors.process(Errors.java:297) at org.glassfish.jersey.internal.Errors.process(Errors.java:267) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028) at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:365) at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:316) at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:179) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:231) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) at java.lang.Thread.run(Thread.java:750) Caused by: javax.ejb.EJBTransactionRolledbackException at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2342) at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2123) at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2044) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220) at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) at com.sun.proxy.$Proxy358.getAllCBSQuery(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.iss.onethod.invoke(Method.java:498) at org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:414) at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:127) at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56) at org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(InjectionPointPropagatingEnterpriseTargetBeanInstance.java:65) at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100) at com.f1soft.banksmart.admin.dao.impl.ApplicationDAO$1497057171$Proxy$$$Weld$EnterpriseProxy$.getAllCBSQuery(Unknown Source) at com.f1soft.fonebank.adminejb.session.ResourceLoader.loadCbsQueryParameterMap(ResourceLoader.java:121) at com.f1soft.fonebank.adminejb.session.ResourceLoader.startup(ResourceLoader.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.iss.onethod.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.BeanCallbackInterceptor.intercept(InterceptorManager.java:1035) at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72) at com.sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.java:205) at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:55) at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.iss.onethod.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.CallbackInterceptor.intercept(InterceptorManager.java:986) at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72) at com.sun.ejb.containers.interceptors.CallbackInvocationContext.proceed(CallbackInvocationContext.java:205) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.init(SystemInterceptorProxy.java:125) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.iss.onethod.invoke(Method.java:498) at com.sun.ejb.containers.interceptors.CallbackInterceptor.intercept(InterceptorManager.java:986) at com.sun.ejb.containers.interceptors.CallbackChainImpl.invokeNext(CallbackChainImpl.java:72) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:412) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:375) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:2014) at com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:468) ... 88 more Caused by: javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted at com.sun.ejb.containers.EJBContainerTransactionManager.useClientTx(EJBContainerTransactionManager.java:357) at com.sun.ejb.containers.EJBContainerTransactionManager.preInvokeTx(EJBContainerTransactionManager.java:251) at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:4524) at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1986) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:210) ... 130 more



I tried confirming the stuffs at

/home/banksmart/glassfish4/glassfish/domains/domain1/config


were similar to what was written in instruction manual. It is indeed except that mine contains few more files.

banksmart@localhost config$ ls
accountConfiguration.properties domain.xml logging.properties
adminConfiguration.properties domain.xml.bak login.conf
admin-keyfile email-configuration.yml pid
applicationMessages.properties glassfish-acc.xml pid.prev
cacerts.jks javaee.server.policy restrict.server.policy
cbs-config.yml keyfile server.policy
datasource-cbs-config.yml keystore.jks utilities-config.yml
default-logging.properties local-password wss-server-config-1.0.xml
default-web.xml lockfile wss-server-config-2.0.xml
domain-passwords log4j.properties


This is what is written in instruction:

written in instruction

https://redd.it/12x93bs
@r_devops
Packer: Ubuntu Image VMWare Customisation

Hey all, not sure if this is the best place for this question, but hey-ho!

​

I have a Packer Ubuntu project that is building an Ubuntu 22.10 image and installing open-vm-tools (among other things), however, when cloning the VM, I am not getting any options to customise the VM (IP, hostname etc etc) - does anyone know the best way to get this configured?

​

TIA!

https://redd.it/12xak97
@r_devops
Bash and other packages missing from the Dockerfile image after building it

I have the following **Dockerfile**:

#FROM zulu:8-jre-alpine
FROM azul/zulu-openjdk-alpine:8-jre

RUN sed -i 's/https/http/' /etc/apk/repositories
#use this because of an issue with apk not working behind proxy on alpine3.13

# installing jq and envsubst binary, very usefull for shell templating
RUN apk update && apk add --no-cache ca-certificates java-cacerts jq bash libintl tini \
&& apk --no-cache add -t p gettext \
&& cp /usr/bin/envsubst /usr/local/bin/envsubst \
&& apk del p

# Kaniko kontext use in build is /builds/infra/baseimages
# and kaniko/ssl/certs/ should be relateive path to the context
# Absolute path does not seem to be supported at kaniko 1.9.1 for COPY below
COPY ../../../kaniko/ssl/certs/ /usr/local/share/ca-certificates/
RUN update-ca-certificates

# Zulu requires an additional symlink. Unlike OpenJDK the Zulu cacerts does not automatically symlink to /etc/ssl/certs/java/cacerts
RUN rm $JAVA_HOME/jre/lib/security/cacerts && ln -s /etc/ssl/certs/java/cacerts $JAVA_HOME/jre/lib/security/cacerts

RUN echo "export http_proxy=${HTTP_PROXY}" >> /etc/profile.d/proxy.sh && echo "export https_proxy=${HTTPS_PROXY}" >> /etc/profile.d/proxy.sh && echo "export no_proxy=${NO_PROXY}" >> /etc/profile.d/proxy.sh

COPY files/run-java.sh /usr/local/bin/

I install bash and I expect it to be there when I execute it in the container but it is not.

​

Running `docker run -it --rm --entrypoint /bin/sh image`:

​

/ # bash
/bin/sh: bash: not found
/ # apk list bash
bash-5.1.16-r0 x86_64 {bash} (GPL-3.0-or-later) [installed]

​

It can see in the list also if I run `apk info bash`:

/ # apk info bash
bash-5.1.16-r0 description:
The GNU Bourne Again shell

bash-5.1.16-r0 webpage:
https://www.gnu.org/software/bash/bash.html

bash-5.1.16-r0 installed size:
1296 KiB

/ #

If I do `apk del bash` and then `apk add bash`\`it sees it and it works.

/ # apk add bash
OK: 126 MiB in 45 packages
/ # bash
/bin/sh: bash: not found
/ # apk del bash
(1/4) Purging bash (5.1.16-r0)
Executing bash-5.1.16-r0.pre-deinstall
(2/4) Purging readline (8.1.1-r0)
(3/4) Purging ncurses-libs (6.3_p20211120-r1)
(4/4) Purging ncurses-terminfo-base (6.3_p20211120-r1)
Executing busybox-1.34.1-r7.trigger
OK: 123 MiB in 41 packages
/ # apk add bash
(1/4) Installing ncurses-terminfo-base (6.3_p20211120-r1)
(2/4) Installing ncurses-libs (6.3_p20211120-r1)
(3/4) Installing readline (8.1.1-r0)
(4/4) Installing bash (5.1.16-r0)
Executing bash-5.1.16-r0.post-install
Executing busybox-1.34.1-r7.trigger
OK: 126 MiB in 45 packages
/ # bash

We are using this Dockerfile as the base and then from this image, it uses to build others like the one above:

#FROM kaniko:1.9.1
FROM gcr.io/kaniko-project/executor:v1.9.1-debug AS kaniko

FROM alpine:3.15

# Use this because of an issue with apk not working behind proxy on alpine3.13/3.14
RUN sed -i 's/https/http/' /etc/apk/repositories

# Adding CAs so that my curl trusts internal resources AND apk trusts https://dl-cdn.alpinelinux.org behind our proxy
RUN echo "export http_proxy=${HTTP_PROXY}" >> /etc/profile.d/proxy.sh && echo "export https_proxy=${HTTPS_PROXY}" >> /etc/profile.d/proxy.sh && echo "export no_proxy=${NO_PROXY}" >> /etc/profile.d/proxy.sh

# Install necessary packages
RUN apk update \
&& apk --no-cache add \
jq \
yq \
git \
gettext \
tzdata \
unzip \
bash \
ca-certificates \
openssl \
coreutils

COPY --from=kaniko /kaniko/executor /kaniko/executor
COPY --from=kaniko /kaniko/docker-credential-gcr /kaniko/docker-credential-gcr
COPY --from=kaniko /kaniko/docker-credential-acr-env /kaniko/docker-credential-acr-env
COPY --from=kaniko /kaniko/.docker /kaniko/.docker
COPY --from=kaniko /kaniko/ssl/certs/ /kaniko/ssl/certs/
COPY --from=kaniko /etc/nsswitch.conf /etc/nsswitch.conf

COPY certs/* /kaniko/ssl/certs/

ENV SSL_CERT_DIR=/kaniko/ssl/certs/
ENV DOCKER_CONFIG /kaniko/.docker/
ENV DOCKER_CREDENTIAL_GCR_CONFIG /kaniko/.config/gcloud/docker_credential_gcr_config.json

ENTRYPOINT ["/kaniko/executor"]

​

I am guessing there is something happening that corrupts or makes bash not available in the first image but I am not sure exactly what or why it's happening for this one.

Also, I checked the path by executing into the image:

`/ # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\`

To give a bit more context:

\- I am using Kaniko as the de facto executor but since we have multiple other images and scripts we need to install some additional packages to accommodate all the other builds of the images for our internal CR.

\- What I noticed is that if I switch the base image from `alpine3.15` to `alpine3.12` all the other images that use or have `alpine3.12` or `alpine3.15` fail. In this case, since we use `alpine3.15` **4** images are failing from **45**, which are the images that are using the same base image which is `alpine3.15`

​

Also adding a minimal reproducible example(s):

​

#FROM zulu:8-jre-alpine
FROM azul/zulu-openjdk-alpine:8-jre

RUN apk update && apk add --no-cache ca-certificates java-cacerts jq bash libintl tini \
&& apk --no-cache add -t p gettext \
&& cp /usr/bin/envsubst /usr/local/bin/envsubst \
&& apk del p

Kaniko Dockerfile:

#FROM kaniko:1.9.1
FROM gcr.io/kaniko-project/executor:v1.9.1-debug AS kaniko

FROM alpine:3.15

# Install necessary packages
RUN apk update \
&& apk --no-cache add \
jq \
yq \
git \
gettext \
tzdata \
unzip \
bash \
ca-certificates \
openssl \
coreutils

COPY --from=kaniko /kaniko/executor /kaniko/executor
COPY --from=kaniko /kaniko/docker-credential-gcr /kaniko/docker-credential-gcr
COPY --from=kaniko /kaniko/docker-credential-acr-env /kaniko/docker-credential-acr-env
COPY --from=kaniko /kaniko/.docker /kaniko/.docker
COPY --from=kaniko /kaniko/ssl/certs/ /kaniko/ssl/certs/
COPY --from=kaniko /etc/nsswitch.conf /etc/nsswitch.conf

ENV SSL_CERT_DIR=/kaniko/ssl/certs/
ENV DOCKER_CONFIG /kaniko/.docker/
ENV DOCKER_CREDENTIAL_GCR_CONFIG /kaniko/.config/gcloud/docker_credential_gcr_config.json

ENTRYPOINT ["/kaniko/executor"]

​

https://redd.it/12xbyda
@r_devops
Day to Day task as a devops

Just got hired as a devops in a very well renowned product and saas base company, Before landing this i was working as jr devops in a project base company for 5 months (graduated 6 months ago)

Just wanted to ask what are the typical tasks and responsibilities that you have and how the onboarding of a resouce looks like for example if you hire a new guy do you guys starts training them etc

For me it starts with training because i am not familiar with few of the technologies that the company the company is using

My plan is to move to uk and want to explore uk market so i wanted to know what can i expect

https://redd.it/12x74ye
@r_devops
Good sub or Discord channel to practice interviews and mocks?

Just got to know EU startup I work remote is shutting down. I am an experienced SRE/Devops and have beeen working on setting up GKE with Pulumi, typescript and stateful databases, Datadog and openTelemetry recently but I now have to catch up on EKS and anything that I haven't worked on recently.

Is there a good sub or Discord channel where you get to practice interviews, maybe take mocks and just keep morale up while job hunting.

https://redd.it/12xfscg
@r_devops